go - channel 数组

标签 go channel

我有一个任务要使用 channel 数组。

我不明白。为什么这不起作用?

package main

import "fmt"

func run() {
    chann[0] <- 1
}

var chann = make([]chan int, 2)

func main() {
    go run()
    obj := <- chann[0]
    fmt.Println(obj)
}

最佳答案

您已经初始化了 channel 数组,但还没有初始化 channel 本身。

至于为什么会死锁;这是因为 channel 值未初始化或设置为 nil 将始终阻塞。 (参见此 article)

关于go - channel 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194690/

相关文章:

multithreading - csharp 中的 grpc channel / stub 线程是否安全

Python和Trio,生产者是消费者,工作完成后如何优雅退出?

go - 迭代时替换 channel

go - 比赛模拟 fatal error : all goroutines are asleep - deadlock

json - 将json字段解码为* regexp.Regexp类型的struct字段

mysql - 如何避免(处理)插入操作的死锁?

go - 有没有办法使用消息来模拟共享状态?

go - 未初始化的 channel 如何表现?

go - 如何通过计算每个像素内几个点的颜色值并取平均值来减少像素化的影响?

go - 原子交换映射指针导致程序卡死