我正在嘗試爲多個處理程序設置一個http標頭。我的第一個想法是創建一個自定義寫入函數,在寫入響應之前設置標題,如底部的代碼示例。爲多個處理程序設置http標頭
但是,當我傳遞一個指向http.ResponseWriter的指針並嘗試從我的函數訪問它時,它告訴我「type * http.ResponseWriter沒有Header方法」。
什麼是爲多個處理程序設置標頭的最佳方式,以及爲什麼指針不按我想要的方式工作?
func HelloServer(w http.ResponseWriter, req *http.Request) {
type Message struct {
Name string
Body string
Time int64
}
m := Message{"Alice", "Hello", 1294706395881547000}
b, _ := json.Marshal(m)
WriteJSON(&w, b)
}
func WriteJSON(wr *http.ResponseWriter, rawJSON []byte) {
*wr.Header().Set("Content-Type", "application/json")
io.WriteString(*wr, string(rawJSON))
}
func main() {
http.HandleFunc("/json", HelloServer)
err := http.ListenAndServe(":9000", nil)
if err != nil {
log.Fatal("ListenAndServer: ", err)
}
}
其實,你並不需要一個取消引用結構。進入自動插入解引用時neccessary。Downvoted因爲誤導。修復後將刪除downvote。 – fuz
好的,這很公平。 – joshlf
好的,它是固定的。 – joshlf