Go 围棋中什么更惯用?

Go 围棋中什么更惯用?,go,interface,Go,Interface,我正在设计一个界面,想知道更惯用的方式是什么: func GetUser(id string) (*User, error) 或 取决于预期目的 如果目的是-给定标识符-获取信息 关于用户并填写用户提供的变量(适当类型) 有了这些信息,就有了 func GetUser(id字符串,u*User)错误 如果目的是获取该信息并创建新值 (指适当的类型)包含该信息并返回 (或者,在您的例子中,是指向它的指针)指向用户,那么情况就是这样 对于func GetUser(id字符串)(*用户,错误) 所以

我正在设计一个界面,想知道更惯用的方式是什么:

func GetUser(id string) (*User, error)


取决于预期目的

如果目的是-给定标识符-获取信息 关于用户并填写用户提供的变量(适当类型) 有了这些信息,就有了
func GetUser(id字符串,u*User)错误

如果目的是获取该信息并创建新值 (指适当的类型)包含该信息并返回 (或者,在您的例子中,是指向它的指针)指向用户,那么情况就是这样 对于
func GetUser(id字符串)(*用户,错误)

所以,归根结底,这并不是要比较 两种解决方案;他们用不同的方法来处理这些问题
数据。

显然是后者。你到底在哪里看到了标准库中的第二个变量?如果这应该是一个输出参数,Go有多个返回参数,没有理由单独使用输出参数。我不是,你需要提供更多的信息。是的,它应该是一个输出参数。两者都是惯用的(名称不受限制)。但是他们做的事情完全不同。@Volker我想你的意思是“显然是前者”,根据第二句话。
func GetUser(id string, u *User) error