一、

二、数组定义

Go语言定义数组需要指定数组类型和元素长度,与C/C++不同的是类型放在最后,语法格式如下:

  1. //定义5个元素长度int类型的数组array
  2. var array [5]int

数组初始化**

  1. //var推导类型,定义cityArray1是3个string类型的数组,使用指定初始值初始化
  2. var cityArray1 =[3]string{"北京","上海","广州"}
  3. //:=推导类型,定义cityArray2是3个string类型的数组,使用指定初始值初始化
  4. cityArray2 := [3]string{"南京","杭州","武汉"}

一般情况下我们可以让编译器根据=号右边的初始值长度自动推导数组元素的长度,例子可简写如下。

  1. var cityArray1 =[...]string{"北京","上海","广州"}
  2. //或
  3. cityArray2 := [...]string{"南京","杭州","武汉"}

数组的遍历

  1. //方法1. for循环遍历
  2. for i := 0; i < len(cityArray1); i++ {
  3. fmt.Println(cityArray1[i])
  4. }
  5. //方法2. for range循环
  6. for index,value := range cityArray1 { //range 从cityArray1输出i,v
  7. fmt.Println(index,value)
  8. }
  • Go语言定义变量必须使用,不使用通过_省略变量。
  • Go语言数组是值类型,当数组作为函数参数是拷贝值一份过去,而不是传递数组首地址,所以在被调函数中无法修改调用函数中的数组

数组作为函数参数

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func printArray( array [3]string) {
  6. for i,v := range array {
  7. fmt.Println(i,v)
  8. }
  9. //修改array[0]的值
  10. array[0]="合肥"
  11. }
  12. func main() {
  13. var cityArray1 = [...]string{"北京", "上海", "广州"}
  14. printArray(cityArray1)//将cityArray1作为函数参数值传递
  15. fmt.Println(cityArray1)//检查cityArray1
  16. }
  17. /*输出结果*/
  18. 0 北京
  19. 1 上海
  20. 2 广州

Go语言数组与C/C++编译语言不同。Go语言数组是值类型,数组作为函数参数是拷贝值传递,被调函数无法修改调用函数的数组元素,而其他编程语言数组是引用传递,可以更改数组元素的值。

使用指针引用传递

  1. func printArray( array *[3]string) {
  2. for i,v := range array {
  3. fmt.Println(i,v)
  4. }
  5. //修改array[0]的值
  6. array[0]="合肥"
  7. }
  8. /*输出结果*/
  9. func main() {
  10. var cityArray1 = [...]string{"北京", "上海", "广州"}
  11. printArray(&cityArray1)//将cityArray1作为函数参数值传递
  12. fmt.Println(cityArray1)//检查cityArray1
  13. //array1 := [...]int{1, 2, 3}
  14. //fmt.Println(array1)
  15. }

多维数组