发布时间:2020-06-19编辑:lianpenglin阅读(1827)
使用数组
就像之前提到的,因为内存布局是连续的,所以数组是效率很高的数据结构。在访问数组里任意元素的时候,这种高效都是数组的优势。要访问数组里某个单独元素,使用[]运算符,如下代码所示
//声明一个包含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语言数组的内部实现和基础功能