- 下面的代码是死循环么?
- 语法糖
- 下面的代码有什么问题么?
- 切片For Range原理
- 其它语法糖
- map
- channel
- 数组
- 字符串
下面的代码是死循环么?
func main() {
v := []int{
1, 2, 3}
for i := range v {
v = append(v, i)
}
}
上面的代码先初始化了一个内容为1、2、3slice
,然后遍历这个slice
,然后给这个切片追加元素。随着遍历的进行,数组v也在逐渐增大,那么这个for
循环是一个死循环么?
答案是否。只会遍历三次,v的结果是[0, 1, 2]。并不是死循环,原因就在于for range实现的时候用到了语法糖。
语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·蘭丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。 语法糖让程序更加简洁,有更高的可读性。
对于切片的for range
,它的底层代码就是:
// for_temp := range