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"}}
到目前为止一切正常,但我知道,没有任何同步就可能发生坏事。什么是正确处理这个问题的首选方法?