一、
二、数组定义
Go语言定义数组需要指定数组类型和元素长度,与C/C++不同的是类型放在最后,语法格式如下:
//定义5个元素长度int类型的数组array
var 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,v
fmt.Println(index,value)
}
- Go语言定义变量必须使用,不使用通过_省略变量。
- Go语言数组是值类型,当数组作为函数参数是拷贝值一份过去,而不是传递数组首地址,所以在被调函数中无法修改调用函数中的数组
数组作为函数参数
package main
import (
"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)
}