当调用具有多个返回值的函数或方法时,调用者如果解包任何返回值,则必须将它们全部解包。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 回答
杨魅力
TA贡献1811条经验 获得超6个赞
在赋值或初始化中使用时具有可选值的表达式是: type assertion、map index和channel receive。
规范没有这些表达式的正式列表,但规范中都描述了这些表达式。
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消