Go中允许省略可选的第二个返回值的案例列表

时间:2019-02-01 16:02:56

标签: go

当调用具有多个返回值的函数或方法时,调用者如果解压缩任何返回值,则必须将它们全部解压缩。

f, err := os.Open("filename")

err变量必须用空白标识符_声明或忽略,但不能省略。

但是,该语言中内置了一些操作,这些操作允许省略第二个可选返回值。

在某种情况下,具有数据结构或函数调用的操作返回的第二个值是可选的,并且仅通过接收第一个返回值可以忽略吗?例如:

m := make(map[string]int)
v, ok := m["hello"]

ok变量是完全可选的,可以省略。

v := m["hello"]

与频道类似:

v, ok := <-ch

v := <-ch

除了上述两种情况之外,还有其他这种情况的情况吗?

1 个答案:

答案 0 :(得分:3)

在赋值或初始化中使用的具有可选值的表达式为:type assertionmap indexchannel receive

规范没有这些表达式的正式列表,但是这些表达式全部在specification中进行了描述。