2017-10-19 43 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 
} 
相關問題