1 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
在“運(yùn)行”功能中,您似乎是:
不檢查錯(cuò)誤 - 我認(rèn)為你應(yīng)該。
處理一個(gè)可變的全局變量——如果你不這樣做,你的代碼將更清晰,更容易測(cè)試和調(diào)試。
在 data.Run() 中處理結(jié)構(gòu)后,如何將結(jié)構(gòu)顯式傳遞給處理后的數(shù)據(jù)的 handlers.getWeather()。我在這里使用指針提供了混合結(jié)果。
創(chuàng)建一個(gè)結(jié)構(gòu),其中包含處理呼叫所需的內(nèi)容。為該結(jié)構(gòu)實(shí)現(xiàn) http.Handler。在設(shè)置服務(wù)器時(shí)使用它。
例子:
package main
import (
"encoding/json"
"log"
"net/http"
)
type TravelHandler struct {
Data interface{} // the preloaded data you need to serve http
}
func (th TravelHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
err := json.NewEncoder(w).Encode(th.Data)
if err != nil {
http.Error(w, "could not encode data", 500)
}
}
func createTravelHandler() *TravelHandler {
// populate travel handler
return &TravelHandler{}
}
func main() {
th := createTravelHandler() // no mutable global, return the handler from a function (or pipe it through several functions)
err := http.ListenAndServe("localhost:3000", th)
log.Println(err)
}
- 1 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報(bào)