发布时间:2020-06-19编辑:lianpenglin阅读(1771)
使用数组
就像之前提到的,因为内存布局是连续的,所以数组是效率很高的数据结构。在访问数组里任意元素的时候,这种高效都是数组的优势。要访问数组里某个单独元素,使用[]运算符,如下代码所示
//声明一个包含5个元素的整形数组 //用具体值初始化每个元素 array := [5]int{10,20,30,40,50} //修改索引为2的元素的值 array[2] = 35
也可以声明一个所有元素都是指针的数组,使用*运算符就可以访问元素指针所指向的值,如下代码所示:
//声明一个包含5个元素的整形数组 //用整形指针初始化索引为0和1的数组元素 array := [5]*int{0:new(int),1:new(int)} //为索引为0和1的元素赋值 *array[0] = 10 *array[1] = 20
在Go语言里,数组是一个值。这意味着数组可以用在赋值操作中。变量名代表整个数组,因此,同样的类型的数组可以赋值给另一个数组,如:
//把同样类型的一个数组赋值给另外一个数组 //声明第一个包含5个元素的字符串数组 var array1 [5]string //声明第二个包含5个元素的字符串数组 //用颜色初始化数组 array2 := [5]string{"Red","Blue","Green","Yellow","Pink"} //把array2的值复制到array1 array1 = array2
复制之后,两个数组完全一样
数组变量的类型包括数组长度和每个元素的类型。只有这两部分都相同的数组,才是类型相同的数组,才能互相赋值,如下代码所示:
//编译器会阻止类型不同的数组互相赋值 //生命第一个包含4个元素的字符串数组 var array1 [4]string //声明第二个包含5个元素的字符串数组 //使用颜色初始化 array2 := [5]string{"Red","Blue","Green","Yellow","Pink"} //将array2复制给array1 array1 = array2 Compiler Error: cannot use array2 (type [5]string) as type [4]string in assigment
复制数组指针,只会复制指针的值,而不会复制指针所指向的值,如下所示:
//把一个指针数组赋值给另外一个 //声明第一个包含3个元素的指向字符串的指针数组 var array1 [3]*string //声明第二个包含3个元素的指向字符串的指针数组 array2 := [3]*string{new(string),new(string),new(string)} //使用颜色为每个元素赋值 *array2[0] = "Red" *array2[1] = "Blue" *array2[2] = "Green" //将array2复制给array1 array1 = array2
复制之后,两个数组指向同一组字符串
修改其中任何一个数组元素的值,两个数组同时变化
标签: golang
如果对你有用打赏一下吧!
上一篇: Go语言数组的内部实现和基础功能