标题都看不懂:舍弃表达式中可选的结果值对程序行为的影响

以下文章来源于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 (可点击下面的原文链接直接访问)。

7