我是golang的新手,我試圖用julienschmidt/httprouter創建一個web項目。我正在尋找創建一個格式良好,結構良好的項目,所以我有兩個關於表演傳球和返回價值或指針的問題。
在我來說,我希望創建一個從請求返回一個對象的功能,所以我已經創造了它:Golang - 傳遞和返回變量的最佳實踐
// StoreController
func (storeController *StoreController) New(w http.ResponseWriter, r *http.Request) {
store, err := utilities.GetStoreFromRequest(r)
// other stuff
return
}
// Utilities package
func GetStoreFromRequest(r *http.Request) (*models.Store, error) {
store := models.Store{}
err := json.NewDecoder(r.Body).Decode(&store)
// return a pointer is better than returning an object?
return &store, err
}
是正確或最好是在storeController創建一個存儲對象,並把它傳遞給像功能:
// StoreController
func (storeController *StoreController) New(w http.ResponseWriter, r *http.Request) {
store := models.Store{}
err := utilities.GetStoreFromRequest(r, &store)
// other stuff
return
}
// Utilities package
func GetStoreFromRequest(r *http.Request, store *models.Store) error {
err := json.NewDecoder(r.Body).Decode(store)
return err
}
另一個問題是關於指針,太偏執地傳遞和返回總是指針而不是對象,錯誤或不? 謝謝
可能重複[爲什麼應該返回地址的構造函數?](http://stackoverflow.com/questions/31932822/why-should-constructor-of-go-return-address/31934189#31934189);和[指針與參數和返回值中的值](http://stackoverflow.com/questions/23542989/pointers-vs-values-in-parameters-and-return-values)。 – icza