2
我有一個結構與許多領域(其中一些指針也是其他結構),這是不斷更新在一個單獨的goroutine。在提供頁面時,可以從go的http
模板訪問相同的結構。如何使用Go http包提供共享結構?
代碼示例:
type SharedStruct struct {
Description string
Counter int
Status_ *Status
LastChecked time.Time
//other fields
}
var shared = &SharedStruct{}
go func() {
//..updates fields every 5 minutes
}()
去-HTTP處理程序:
func someHandler(w http.ResponseWriter, r *http.Request) {
t.ExecuteTemplate(w, "page.html", shared)
}
和page.html
模板:
...
Status: {{.Status_.StatusCode}}
Counter: {{.Counter}}
Last checked: {{.LastChecked.Format "2006-02-01 15:04:05"}}
到目前爲止一切正常,但我知道,沒有任何同步就可能發生壞事。什麼是正確處理這個問題的首選方法?