为什么我的随机数不会更新?

abe*_*bel 1 random google-app-engine go

我在Golang中做了以下(在Appengine上主持)

每当我通过运行dev_appserver命令启动应用程序并访问localhost:8080的页面时,我会得到一个页面,其中包含1到19之间的新随机数.但是在浏览器中刷新页面时,此数字不会更改.如果我通过运行dev_appserver来终止服务器并重新启动,我会得到一个新的随机数.如何获取页面刷新时更新的随机数.

代码如下:

包测试页

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 
Run Code Online (Sandbox Code Playgroud)

Ale*_*nok 7

varHtml是一个包级变量,只计算一次.

您应该将其移动到处理程序:

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

此外,每次都不需要种兰德.

最好在包装上做到init():

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

func random(min, max int) int {
    return rand.Intn(max - min) + min
}
Run Code Online (Sandbox Code Playgroud)