go语言range用法特点
1 range是嵌套在for语句中执行
例子1:
打印结果为for: 1
for: 2
for: 3
for: 4
for: 5
for: 6
打印内容为arr的值,而 "_"为省略命名的下标
for: 0
for: 1
for: 2
for: 3
for: 4
for: 5
打印内容为arr的下标
3 OK 下面重点说下range 在 chan里面的使用看代码:(无法索取下标)
没有 close(chan)导致报错:fatal error: all goroutines are asleep - deadlock! 死锁
OK ,把 close(ch)注释打开,正常运行。
说明了 带有range 的 for语句 在 chan的遍历中,等待 close(chan)如果不进行close依然会进行读取。
而有限的for 语句则不会这样,而是直接执行完毕.具体 输出如下
For: 0
For: len1= 0 value= 0 len2= 9
For: 9
For: len1= 9 value= 1 len2= 8
For: 8
For: len1= 8 value= 2 len2= 7
For: 7
For: len1= 7 value= 3 len2= 6
For: 6
For: len1= 6 value= 4 len2= 5
Range:len1= 4 value= 5 len2= 4
Range:len1= 3 value= 6 len2= 3
Range:len1= 2 value= 7 len2= 2
Range:len1= 1 value= 8 len2= 1
Range:len1= 0 value= 9 len2= 0
Range:len1= 1 value= 10 len2= 1
Range:len1= 0 value= 11 len2= 0
fatal error: all goroutines are asleep - deadlock!
以上内容有牵连 chan的一些特性。如不了解chan特性 下次再讨论
本文固定链接: http://www.4yue.net/post-157.html
发表评论