匿名结构体和空结构体
在 Go 中,匿名结构体是没有名称的结构体。它通常用于创建临时或短暂的数据结构。空结构体没有字段,占用零字节内存。
[第一个问题]
以下代码使用匿名结构体来表示战士已经完成战斗:
done := make(chan struct{})
struct{} 类型表示一个空结构。这里使用它是因为我们不需要在结构中存储任何数据。我们只想用它来表示战士已经完成战斗。
以下行将空结构发送到完成通道:
done <- struct{}{}
需要额外的括号,因为 < ;和>运算符的优先级低于
[第二个问题]
下面这行等待所有勇士战斗结束:
for _ = range langs { <-done }
这一行使用范围表达式从完成的通道接收。 _ 字符用作占位符变量,表示我们不关心收到的值。这是因为战士发送的空结构体不包含任何数据。
范围表达式是必要的,因为它允许程序等待所有战士完成战斗才能继续。如果没有它,程序只会等待第一个战士完成战斗才继续。
以上是Go 中的匿名结构和空结构是什么?它们如何用于信号发送?的详细内容。更多信息请关注PHP中文网其他相关文章!