学习for循环的小问题,恳请老师指点一下

176840078@qq.com · · 1721 次点击
package main import ( "fmt" ) func main() { sum := 0 for i := 0; i < 10; i++ { sum += i } //这行以上好理解,我能懂 list := []string{"aaa", "bbb", "ccc"} //请问1,这里list的值是切片么?好像不是数组。 for _, v := range list { //请问2,这_,与range配合起到啥作用?这个程序好像是死循环啊 fmt.Print("%s", v) } } //我也是新手,回复下我的理解,如果错误多多指教 1:数组和切片的区别 数组是值类型,赋值和传参会复制整个数组,而不是指针。 数组长度必须是常量,且是类型的组成部分。[2]int 和 [3]int 是不同类型。 支持 "=="、"!=" 操作符,因为内存总是被初始化过的。 指针数组 [n]*T,数组指针 *[n]T。 a := [2]int{1, 2} // 未初始化元素值为 0。 b := [...]int{1, 2, 3, 4} // 通过初始化值确定数组长度。 c := [5]int{2: 100, 4:200} // 使用索引号初始化元素。 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案 引用类型。但自身是结构体,值拷贝传递。 属性 len 表示可用元素数量,读写操作不能超过该限制。 属性 cap 表示最大扩张容量,不能超出数组限制。 如果 slice == nil,那么 len、cap 结果都等于 0。 data := [...]int{0, 1, 2, 3, 4, 5, 6} slice := data[1:4:5] // [low : high : max] 2:range 和 _我的理解 _ 匿名的K,在写for循环的时候,我记住这个是range的用法 key,value := range list
#2
更多评论
能排得整齐些吗? 1. list是切片,字符串切片 2. 与range配合,作用同上,就是循环。这是惯用法。for后面少了一个"_"(不含引号),还有fmt.print是不是少了个"f",应该是fmt.printf吧。
#1
可以把_看成黑洞 :smile:
#3