【问题标题】:What is more idiomatic in go?什么是更惯用的?
【发布时间】:2018-02-07 14:14:00
【问题描述】:

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

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

func GetUser(id string, u *User) error

【问题讨论】:

  • 显然是后者。您到底在哪里看到标准库中的第二个变体?
  • 如果这应该是一个输出参数,Go有多个返回参数,没有理由单独输出参数。我不是,您需要提供更多信息。
  • 是的,应该是输出参数。
  • 两者都是惯用的(名称不符合)。但他们做的事情完全不同。
  • @Volker 根据第二句话,我认为您的意思是“显然是前者”。

标签: go interface


【解决方案1】:

取决于预期目的。

如果目的是——给定一个标识符——获取信息 关于用户并填写用户提供的变量(适当的类型) 有了这些信息,情况就是这样 func GetUser(id string, u *User) error.

如果目的是获取该信息并创建一个新值 (适当的类型)包含该信息并返回它 (或者 - 在你的情况下 - 指向它的指针)给用户,然后就是这种情况 对于func GetUser(id string) (*User, error)

所以,最后,这不是比较“惯用因素”的 两种解决方案;他们捕捉不同的方式来处理获得的 数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2011-08-13
    • 2012-04-26
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多