我在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
答案 0 :(得分:7)
varHtml
是一个包级变量,只计算一次。
您应该将其移至处理程序:
func handler(w http.ResponseWriter, r *http.Request) {
var varHtml = `Random number is ` + strconv.Itoa(random(1, 19))
fmt.Fprint(w, varHtml)
}
此外,每次都没有必要播种rand。
最好在包init()
上执行此操作:
func init() {
rand.Seed(time.Now().Unix())
}
func random(min, max int) int {
return rand.Intn(max - min) + min
}