最新回答 / tom_0
其实case可以理解为尝试读取ch4,这时会发生两种情况,一种是读取到数据,一种是没读取到数据,如果读取不到数据,则default条件成立;如果读取到数据,这时又分为两种情况,一种是读取正常的数据,且通道也正常(ok为true);另外一种情况是通道关闭了,这时读取到的值是:e为零值,这里为int的0,然后ok为false,表示通道已经关闭。所以,如果没有close,第三次循环就会又进入 default 语句,然后ch4会再次被赋值,在第四次执行时,再次输出1
2017-08-01
func (p *Person) Move(newaddr string) string{
oldaddr := p.Address
p.Address = newaddr
return oldaddr
}
oldaddr := p.Address
p.Address = newaddr
return oldaddr
}
2017-07-16
vim /etc/profile
最后一行插入
export GOROOT=/usr/local/go
export GOPATH=~/golib:~/goproject
export GOBIN=~/gobin
export PATH=$PATH:$GOROOT/bin:$GOBIN
然后 source /etc/profile
root 权限下,
最后一行插入
export GOROOT=/usr/local/go
export GOPATH=~/golib:~/goproject
export GOBIN=~/gobin
export PATH=$PATH:$GOROOT/bin:$GOBIN
然后 source /etc/profile
root 权限下,
2017-07-12
number=6,然后sender接收到6,但是如果声明myChannel=make(chan int, (0)),这表示是一个非缓冲通道,那么,sender为6,myChannel接收到值之后立马阻塞,然后去执行下面的匿名函数,在打印的时候取走了myChannel通道里面的值,然后myChannel不被阻塞,再执行上面的一个匿名函数,所以结果是Received! 6
Sent!
Sent!
2017-07-11