我是新来编程的人。这是我的代码。我试图将值分配给一个结构并将该结构分配给通道。但这不是设置它,而是要使用默认情况。
package main
import (
"fmt"
)
type object struct {
a int
b string
}
func main() {
o1 := object{
a: 25,
b: "quack",
}
var oc chan object
select {
case oc <- o1:
fmt.Println("Chan is set")
default:
fmt.Println("Chan is not set")
}
}
Run Code Online (Sandbox Code Playgroud)
您从未初始化oc通道,所以它是nil,并且在nil通道上发送会永远阻塞。而select声明选择default,如果没有现成的案例。
您必须初始化通道。如果没有接收者,则它必须具有“某些”缓冲区以容纳要在其上发送的元素,否则发送也会阻塞。
这可以按照您想要的方式工作(在Go Playground上尝试):
var oc chan object
oc = make(chan object, 1)
Run Code Online (Sandbox Code Playgroud)
请参阅相关内容:未初始化的通道的行为如何?
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |