一、
二、数组定义
Go语言定义数组需要指定数组类型和元素长度,与C/C++不同的是类型放在最后,语法格式如下:
//定义5个元素长度int类型的数组arrayvar array [5]int
数组初始化**
//var推导类型,定义cityArray1是3个string类型的数组,使用指定初始值初始化var cityArray1 =[3]string{"北京","上海","广州"}//:=推导类型,定义cityArray2是3个string类型的数组,使用指定初始值初始化cityArray2 := [3]string{"南京","杭州","武汉"}
一般情况下我们可以让编译器根据=号右边的初始值长度自动推导数组元素的长度,例子可简写如下。
var cityArray1 =[...]string{"北京","上海","广州"}//或cityArray2 := [...]string{"南京","杭州","武汉"}
数组的遍历
//方法1. for循环遍历for i := 0; i < len(cityArray1); i++ {fmt.Println(cityArray1[i])}//方法2. for range循环for index,value := range cityArray1 { //range 从cityArray1输出i,vfmt.Println(index,value)}
- Go语言定义变量必须使用,不使用通过_省略变量。
- Go语言数组是值类型,当数组作为函数参数是拷贝值一份过去,而不是传递数组首地址,所以在被调函数中无法修改调用函数中的数组
数组作为函数参数
package mainimport ("fmt")func printArray( array [3]string) {for i,v := range array {fmt.Println(i,v)}//修改array[0]的值array[0]="合肥"}func main() {var cityArray1 = [...]string{"北京", "上海", "广州"}printArray(cityArray1)//将cityArray1作为函数参数值传递fmt.Println(cityArray1)//检查cityArray1}/*输出结果*/0 北京1 上海2 广州
Go语言数组与C/C++编译语言不同。Go语言数组是值类型,数组作为函数参数是拷贝值传递,被调函数无法修改调用函数的数组元素,而其他编程语言数组是引用传递,可以更改数组元素的值。
使用指针引用传递
func printArray( array *[3]string) {for i,v := range array {fmt.Println(i,v)}//修改array[0]的值array[0]="合肥"}/*输出结果*/func main() {var cityArray1 = [...]string{"北京", "上海", "广州"}printArray(&cityArray1)//将cityArray1作为函数参数值传递fmt.Println(cityArray1)//检查cityArray1//array1 := [...]int{1, 2, 3}//fmt.Println(array1)}
