码迷,mamicode.com
首页 > 其他好文 > 详细

chan array初始化

时间:2016-06-16 19:58:27      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:

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)
}
OUT:fatal error: all goroutines are asleep - deadlock!

如果用fswatch观看,只能发现是阻塞的,没有这个信息。

该问题产生的原因:

var chann = make([]chan int, 2) 仅仅是初始化了chan 数组,但是数组中的每个chan没有初始化,值为nil. 这个时候不论是往通道变量里写数据还是读数据都是无法进行的。

  正确的初始化方法:

var chans = []chan int {
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
   make(chan int),
}  

或者 

var chans [5]chan int
for i := range chans {
   chans[i] = make(chan int)
}

 

  

 

chan array初始化

标签:

原文地址:http://www.cnblogs.com/logo-fox/p/5591741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!