2
私は別のゴルーチンで連続して更新されている多くのフィールドを持つ構造体を持っています(そのうちのいくつかは他の構造体へのポインタでもあります)。同じ構造体は、ページが提供されるときに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"}}
だから、期待通りまでのところすべてが動作しますが、私は承知しています同期がなくても悪いことが起きる可能性があります。これを適切に処理するための好ましい方法は何ですか?