我是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