这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
数组&遍历
数组
Go 语言提供了数组类型的数据结构。
- 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
- 数组可以存放多个同一类型数据,同时数组也是一种数据类型,在Golang中,数组是一种值类型,因此在默认下是值传递,在函数中修改的是拷贝的数值(新的栈),不影响本身数值
- 相对于去声明
number0, number1, ..., number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。 - 数组元素可以通过索引(位置)来读取(或者修改),索引从
0开始,第一个元素索引为0,第二个索引为1,以此类推。 - 数组的地址可以通过地址名获取,数组第一个元素的地址就是数组的首地址 注意:
- 数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。
- 如果设置了数组的长度,我们还可以通过指定下标来初始化元素:
- 这个顺序不是固定的,没有指定的顺序,是按照下标的顺序
- 数组创建的时候,如果没有赋值,则使用默认值
- 初始化数组中
{}中的元素个数不能大于[]中的数字。 - 如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度
- int默认是int64,占8个字节,而int32占4个字节,使用&取地址a[0]和a[1]地址隔4个字节
遍历
-
常规遍历
for i := 0; i < len(a);i++ { fmt.Printf("请输入当前第%d个元素的值\n",&i+1) fmt.Scanln(&a[i]) } -
for range遍历
for index,value := range array{ .... }- index : 数组下标
- value 下标对应位置
- array:数组名
- 都是仅在for循环内部可见的局部变量
- 遍历数组时,如果不想使用index,可以使用
_代替 - 输出可以使用i+1配合
-
数组的引用传递 数组本身是属于值传递的,要是想修改数组的值,那么需要使用指针,使用指针传递的效率更好。
注意:每次执行的随机数都是一样的,这是由于函数使用给定的seed来初始化生成器到一个确定的状态,故需要一个种子数 解决:为了每次生成随机数不一样,我们给定的seed值也应该不一样,此时可以用
unix()时间戳 交换的思路,反转打印,交换的次数应该只需要一般len/2,不可写len,否则交换了两次