在我使用Golang的探索中,我遇到了从方法返回值的不同方法。为了使这更容易,我将举一个例子。假设我们有两个方法返回单个Corgi
结构和一个Corgi
切片。
来自Java / C#land,实现此目的的一种方法是将值或指针作为返回的一部分包含在内,如下所示:
func GetCorgi(id int) (Corgi, error) {
// Do stuff and return a Corgi struct or error
}
func GetAllCorgis() ([]Corgi, error) {
// Do stuff and return a slice of Corgi structs or error
}
但是,我注意到其他API,如App Engine和MongoDB,使用这种方法来传递一些指针然后被填充的方法。
App Engine Get
func Get(c context.Context, key *Key, dst interface{}) error
func (q *Query) One(result interface{}) (err error)
func (q *Query) All(result interface{}) error
在我的情况下,这可能是这样的
func GetCorgi(id int, corgi *Corgi) error {
// Populate corgi and return error
}
func GetAllCorgis(corgis *[]Corgi) error {
// Populate corgi and return error
}
这是偏好/风格吗?或者一种方法有优势吗?