为什么我的随机号码没有更新?
问题描述:
我做的(托管在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
答
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
}