2017-10-19 74 views
1

我做的(托管在AppEngine上)为什么我的随机号码没有更新?

每当我通过运行dev_appserver命令启动应用程序,我在本地主机访问该页面在Golang如下:8080,我得到1和19之间有一个新的随机数页但在刷新浏览器页面时,这个数字不会改变。如果我杀死服务器并通过运行dev_appserver重新启动,我会得到一个新的随机数。如何在刷新页面时获取随机数字进行更新。

代码如下:

包testpage

import (
    "fmt" 
    "net/http" 
    "math/rand" 
    "time" 
    "strconv" 
) 

func init() { 
    http.HandleFunc("/", handler) 
} 

func handler(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprint(w, varHtml) 
} 
func random(min, max int) int { 
    rand.Seed(time.Now().Unix()) 
    return rand.Intn(max - min) + min 
} 

var myrand = strconv.Itoa(random(1, 19)) 
var varHtml = ` 

Random number is ` + myrand 

回答

7

varHtml的是封装级变量并计算一次。

你应该把它移动到处理程序:

func handler(w http.ResponseWriter, r *http.Request) { 
    var varHtml = `Random number is ` + strconv.Itoa(random(1, 19)) 
    fmt.Fprint(w, varHtml) 
} 

也没有必要每次播种兰特。

这是更好的封装init()做到这一点:

func init() { 
    rand.Seed(time.Now().Unix()) 
} 

func random(min, max int) int { 
    return rand.Intn(max - min) + min 
} 
相关问题