标题都看不懂:舍弃表达式中可选的结果值对程序行为的影响
以下文章来源于Go 101 ,作者老貘
我们知道,Go中的某些表达式可以有一个可选的结果。这样的表达式包括:
- 数据通道数据发送操作
- 映射(map)元素索引操作
- 类型断言操作
一个展示了这三种操作的例子:
package main
func main() {
// 映射索引操作
m := map[int]int{}
_, keyExists := m[123]
println(keyExists) // false
m[123] = 789
_, keyExists = m[123]
println(keyExists) // true
// 数据通道数据发送操作
c := make(chan int, 1)
c
在上面这个例子中,上述操作中的第二个可结果值都呈现出来了。如果这些结果不呈现出来,并且它们的值为false时,这些操作的行为会发生改变吗?让我们写一个小例子来测试一下:
package main
func main() {
// 映射索引操作
m := map[int]int{}
_ = m[123] // 此行不会产生恐慌
// 数据通道数据发送操作
c := make(chan int, 1)
close(c)
_ =
从这个小例子可以看出,映射索引操作和数据通道数据发送操作中的值为false的可选结果不呈现出来时,对程序行为没有影响;但是,当类型断言操作中的值为false的可选结果不呈现出来时(即断言失败并且可选结果不呈现时),将导致一个恐慌。
关于更多Go语言编程中的事实、细节和技巧,请访问《Go语言101》官方网站:https://gfw.go101.org (可点击下面的原文链接直接访问)。