首页 > 解决方案 > 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

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

标签: go

解决方案


在赋值或初始化中使用时具有可选值的表达式是: 类型断言映射索引通道接收

规范并没有这些表达式的正式列表,但是这些表达式都在规范中描述。


推荐阅读