【发布时间】:2016-11-26 20:20:19
【问题描述】:
我是 golang 新手,我正在尝试使用 julienschmidt/httprouter 创建一个 Web 项目。我正在寻找创建一个格式良好且结构良好的项目,所以我有两个关于性能传递和返回值或指针的问题。
就我而言,我想创建一个从请求返回对象的函数,因此我创建了它:
// 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中创建一个store对象,然后传给如下函数:
// 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
}
另一个问题是关于指针的,是否过于偏执而无法传递和返回总是指针而不是对象和错误? 谢谢
【问题讨论】:
标签: performance function pointers go