1、表达式结构
for i := range a {
fmt.Println(i)
}
range表达式支持的常用数据类型包括:array、slice、map、channel......
2、语法糖还原
针对不同的数据类型,go编译器会将语法糖还原为对应的C循环风格。
2.1、array
len_temp := len(range)
range_temp := range
for index_temp = 0; index_temp < len_temp; index_temp++ {
value_temp = range_temp[index_temp]
index = index_temp
value = value_temp
original body
}
2.2、slice
for_temp := range
len_temp := len(for_temp)
for index_temp = 0; index_temp < len_temp; index_temp++ {
value_temp = for_temp[index_temp]
index = index_temp
value = value_temp
original body
}
3.3、channel
for{
v,ok=<-ch
if!ok{
break
}
original body
}