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

176840078@qq.com · 2016-04-03 04:35:40 · 1898 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-04-03 04:35:40 的主题,其中的信息可能已经有所发展或是发生改变。

1:sum := 0
2for i := 0; i < 10; i++ {
3:sum += i
4} //这行以上好理解,我能懂
5:list := []string{"aaa", "bbb", "ccc"} //请问1,这里list的值是切片么?好像不是数组。
6for _,v := range list{    //请问2,这_,与range配合起到啥作用?这个程序好像是死循环啊
7:fmt.Print("%s", v)
8}
//(右边是原文注释)这里使用了一个range,key和value分别是int和string类型,key是序号,从0开始,value是值

这是我学习时遇到的一个例子注释是我的疑问。请路过的老师扶一把,谢谢。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1898 次点击  
加入收藏 微博
3 回复  |  直到 2016-04-05 04:35:18
xep007
xep007 · #1 · 9年之前

能排得整齐些吗?

  1. list是切片,字符串切片
  2. 与range配合,作用同上,就是循环。这是惯用法。for后面少了一个"_"(不含引号),还有fmt.print是不是少了个"f",应该是fmt.printf吧。
easonxie
easonxie · #2 · 9年之前

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

Michael_sun
Michael_sun · #3 · 9年之前

可以把_看成黑洞 :smile:

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传