【问题标题】:Is there a way to ignore an error return value in Golang? [duplicate]有没有办法忽略 Golang 中的错误返回值? [复制]
【发布时间】:2016-07-01 09:31:04
【问题描述】:

我正在尝试在 Go 中初始化一个结构,如果遇到使用 strconv.Atoi("val") 从字符串转换的字符串,我的值之一是返回一个 int 和一个错误。

我的问题是:有没有办法在 Golang 中忽略错误返回值?

ts := &student{
    name: td[0],
    ssn: td[2],
    next: students.next,
    age: strconv.Atoi(td[1]),
  }

这给出了错误

multiple-value strconv.Atoi() in single-value context

如果我添加了我不想包含在我的结构中的错误,我会得到一个错误,我正在使用结构中未定义的方法。

【问题讨论】:

  • 是的,我看过了,看起来他们没有使用复合文字初始化。
  • 是的,它没有在复合文字中使用,但这并没有改变他们想要实现相同目标的事实:丢弃返回的第二个值(错误)。请也阅读答案,其中建议使用 MustXXX() 辅助函数来做到这一点。
  • 那么就没有办法在一行中做到吗?
  • 没有。此答案中列出了您的选项:Return map like 'ok' in golang on normal functions(实际上你也可以在一行中完成,但这会更丑陋 - 有关技术,请参阅 this answer。)
  • 很遗憾,但没有办法一口气做到。

标签: go


【解决方案1】:

您可以在赋值左侧使用_ 忽略返回值,但是,在使用示例中的“复合文字”初始化样式时,我认为没有任何方法可以做到这一点。

IE 我可以做到returnValue1, _ := SomeFuncThatReturnsAresultAndAnError() 但如果你在你的例子中尝试过这样的;

ts := &student{
    name: td[0],
    ssn: td[2],
    next: students.next,
    age, _: strconv.Atoi(td[1]),
  }

它还会产生编译器错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2017-12-12
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多