使用Golang填充和返回对象的样式

时间:2016-08-24 12:45:29

标签: go

在我使用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

Mongo OneAll

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
}

这是偏好/风格吗?或者一种方法有优势吗?

0 个答案:

没有答案