我是 Go 的新手,也在线程“throw: all goroutines are sleep”上看了一点,但我仍然想知道为什么这段代码会死锁。我相信我在 namesInDir 中放了一个数字,之后应该可以打印出来。似乎我无法将号码添加到频道 - 这让我感到困惑。任何人都可以帮助我?
type uniprot struct
{
namesInDir chan int
}
func main(){
u := uniprot{}
u.namesInDir = make(chan int)
u.namesInDir <- 1
//u.readFilenames(os.Args[1])
u.printName()
}
func (u* uniprot) printName(){
name := <-u.namesInDir
fmt.Println(name)
}
我得到了一些建议,我可以通过缓冲频道来作弊。为什么这不起作用?
u.namesInDir = make(chan int, 100)
u.namesInDir <- 1
for i := 0; i < 10; i++ {
go u.printName()
}
慕的地10843
相关分类