在Golang中,有没有一种方法可以忽略错误返回值?

13

我正在尝试在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
如果我添加错误信息到我的结构体中,但我不想这么做,那么我将会收到一个错误,提示我正在使用未在结构体中定义的方法。

我看了一下,似乎他们没有使用复合字面初始化。 - anonrose
2
是的,它没有在复合字面量中使用,但这并不改变他们想要实现相同目标的事实:丢弃返回的第二个值(错误)。请阅读答案,其中建议使用MustXXX()辅助函数来实现这一点。 - icza
那么没有一行代码的方式可以实现吗? - anonrose
不行。你的选项列在这个答案中:在普通函数中返回类似于Golang中的'ok'的映射(实际上,你也可以用一行代码完成,但那会更丑陋 - 参见这个答案中的技巧。) - icza
遗憾的是,没有办法在一行中完成它。 - i.van
1个回答

11
你可以使用赋值语句左侧的_来忽略一个返回值,但是在使用你示例中的'复合字面量'初始化样式时,我认为没有任何方法可以这样做。
例如,我可以使用returnValue1, _ := SomeFuncThatReturnsAresultAndAnError(),但如果你在你的示例中尝试这样做,会出现问题。
ts := &student{
    name: td[0],
    ssn: td[2],
    next: students.next,
    age, _: strconv.Atoi(td[1]),
  }

它还将生成编译器错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接