go语言入门五 | 青训营笔记

72 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

数组&遍历

数组

Go 语言提供了数组类型的数据结构。

  • 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
  • 数组可以存放多个同一类型数据,同时数组也是一种数据类型,在Golang中,数组是一种值类型,因此在默认下是值传递,在函数中修改的是拷贝的数值(新的栈),不影响本身数值
  • 相对于去声明 number0, number1, ..., number99 的变量,使用数组形式 numbers[0], numbers[1] ..., numbers[99] 更加方便且易于扩展。
  • 数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。
  • 数组的地址可以通过地址名获取,数组第一个元素的地址就是数组的首地址 注意:
  1. 数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。
  2. 如果设置了数组的长度,我们还可以通过指定下标来初始化元素:
  3. 这个顺序不是固定的,没有指定的顺序,是按照下标的顺序
  4. 数组创建的时候,如果没有赋值,则使用默认值
  5. 初始化数组中 {} 中的元素个数不能大于 [] 中的数字。
  6. 如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度
  7. int默认是int64,占8个字节,而int32占4个字节,使用&取地址a[0]和a[1]地址隔4个字节

遍历

  1. 常规遍历

        for i := 0; i < len(a);i++ { fmt.Printf("请输入当前第%d个元素的值\n",&i+1) fmt.Scanln(&a[i]) }
    
  2. for range遍历

    for index,value := range array{ .... }
    
    1. index : 数组下标
    2. value 下标对应位置
    3. array:数组名
    4. 都是仅在for循环内部可见的局部变量
    5. 遍历数组时,如果不想使用index,可以使用_代替
    6. 输出可以使用i+1配合
  3. 数组的引用传递 数组本身是属于值传递的,要是想修改数组的值,那么需要使用指针,使用指针传递的效率更好。

    注意:每次执行的随机数都是一样的,这是由于函数使用给定的seed来初始化生成器到一个确定的状态,故需要一个种子数 解决:为了每次生成随机数不一样,我们给定的seed值也应该不一样,此时可以用unix()时间戳 交换的思路,反转打印,交换的次数应该只需要一般 len/2,不可写len,否则交换了两次