当调用具有多个返回值的函数或方法时,调用者如果解压缩任何返回值,则必须将它们全部解压缩。
f, err := os.Open("filename")
err
变量必须用空白标识符_
声明或忽略,但不能省略。
但是,该语言中内置了一些操作,这些操作允许省略第二个可选返回值。
在某种情况下,具有数据结构或函数调用的操作返回的第二个值是可选的,并且仅通过接收第一个返回值可以忽略吗?例如:
m := make(map[string]int)
v, ok := m["hello"]
ok
变量是完全可选的,可以省略。
v := m["hello"]
与频道类似:
v, ok := <-ch
或
v := <-ch
除了上述两种情况之外,还有其他这种情况的情况吗?
答案 0 :(得分:3)
在赋值或初始化中使用的具有可选值的表达式为:type assertion,map index和channel receive。
规范没有这些表达式的正式列表,但是这些表达式全部在specification中进行了描述。