Go 数组 | Go主题月

435 阅读1分钟

(1) 声明数组

Go数组声明时必须确定数组大小和数组元素类型,数组元素类型可以为所有基本元素类型(**注意:**字符串类型在Go中也是基本数据类型)

var s[10] string  //长度为10的字符串数组

同时,与java,c++不同的是,类型一致,长度不一致的数组不能相互赋值(因为Go数组类型由元素类型和数组大小共同决定)

package  main
import "fmt"
//数组
 
func main(){
	var a1 [1]bool //定义数组必须指定存放元素的类型和容量
	var a2 [2]bool

	a2 = a1
	fmt.Printf("%T,%T",a1,a2)
}

输出错误:

# command-line-arguments
./main.go:9:5: cannot use a1 (type [1]bool) as type [2]bool in assignment

(2)初始化数组

初始化数组的三种方式:

package  main
import "fmt"
//数组
 
func main(){
	var a3 [3]string //定义数组必须指定存放元素的类型和容量

	//数组的初始化
	//1. 初始化方式1
  //常规初始化方式
	a3 = [3]string{"有一群","漂亮的","小姑凉"}
	fmt.Println(a3)
	//2. 初始化方式2
	//当不确定数组长度时使用
	a4 := [...]string{"我爱我家","和狗狗"}
	fmt.Println(a4)
	fmt.Printf("%T\n",a4)
	//3. 初始化方式3
	//根据索引来初始化
	a6 := [4]int{0:1,2:2}
	fmt.Println(a6)
}

输出结果:

[有一群 漂亮的 小姑凉]
[我爱我家 和狗狗]
[2]string
[1 0 2 0]

(3)二维数组

package  main
import "fmt"
//数组
 
func main(){
	//声明并定义二维数组
	b1 := [2][3]int{{1,2,3},
		{4,5,6}}
	fmt.Println(b1)

	//修改二维数组值
	b1[1][0] = 99
	fmt.Println(b1)
}