Go语言数组的使用

数组

数组就是指一系列同一类型元素的集合,数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度.
go语言常规数组的声明方法:

[16]byte					//长度为16的数组,每个元素为一个字节
[2*N] struct { x, y int32}			//复杂类型数组
[1000]*float64					//指针数组
[3][5]int					//二维数组

go语言中,数组定义长度之后就不可以修改,在声明长度时可以为一个常量,或者是一个常量表达式(是指在编译期可计算结果的表达式),数组的长度是该数组类型的一个内置常量,使用非常简单比如:

arrayLength := len(array)			//获取数组长度
1:访问数组元素

直接使用数组下标来访问数组中的元素,下标从0开始, len(array)-1 可直接获取数组的最大下标,下面是遍历整个数组的例子:

array := [5]string{"zhangsan","lisi","wanger","xiaohong","xiaoming"}
for i :=0; i

go还提供了一个关键字为 range,用于便捷遍历容器中的元素,当然,数组也是 range 的支持范围,上面遍历过程可以简化为:

array := [5]string{"zhangsan","lisi","wanger","xiaohong","xiaoming"}
for i , v := range array {
	fmt.Println("Array element[", i, "]=", v);
}

不难看出 range具有两个返回值,第一个返回值是元素的数组下标,第二个返回值是元素的值.

1:值类型

需要注意的是,在 go 中,数组是一个值类型,话句话说,就是数组是一个值传递,并不是应用传递,值传递在赋值或者当做参数进行传递是,仅仅是一个复制的动作. 因此,在函数体中修改传入的数组的内容,所修改的只是所传入的数组的一个副本.
例如:

func main(){
	array := [5]string{"xiaohong","xiaoming","wanger","lisi","zhangsan"}
	modify(array)
	fmt.Println("In main(), array values:", array)
}
func modify(array [5]string){
	array[0]="new_xiaoming"
	fmt.Println("In modify(), array values:", array)
}

打印结果:
In modify(), array values: [new_xiaoming xiaoming wanger lisi zhangsan]
In main(), array values: [xiaohong xiaoming wanger lisi zhangsan]

执行结果不难看出,函数 modify() 中所执行的操作并没有影响 main() 函数中的数组.两个数组是不同的实例

你可能感兴趣的:(golang,学习路线,go,golang,go数组,golang数组)