Array(数组)
数组是同一种数据类型的集合。在Go中,数组从声明就确定,使用时可以修改数组的成员,但数组大小不可变。
数组定义
var 数组变量名[数组数量] T
var a[3]int
数组是值类型
数组为值类型,赋值和传参会复制整个数组,改变副本的值不影响原值。
func main() {
a := [2]int{1, 2}
b := a
b[0] = 100
fmt.Println(a) // [1 2]
fmt.Println(b) // [100 2]
}
数组初始化
方法一
func main() {
var testArray [3]int
var numArray = [3]int{1, 2, 3}
var cityArray = [3]string{"北京", "上海", "深圳"}
fmt.Println(testArray) // [0 0 0]
fmt.Println(numArray) // [1 2 3]
fmt.Println(cityArray) // [北京 上海 深圳]
}
方法二
func main() {
var testArray [3]int
var numArray = [...]int{1, 2, 3}
var cityArray = [...]string{"北京", "上海", "深圳"}
fmt.Println(testArray) // [0 0 0]
fmt.Println(numArray) // [1 2 3]
fmt.Println(cityArray) // [北京 上海 深圳]
}
方法三
func main() {
var cityArray = [...]string{0: "北京", 1: "上海", 4: "深圳"}
fmt.Println(cityArray) // [北京 上海 深圳]
}
数组遍历
// 方法一
func main() {
var cityArray = [...]string{"北京", "上海", "广州", "深圳"}
for i := 0; i < len(cityArray); i++ {
fmt.Println(cityArray[i])
}
}
// 方法二(如果不需要index,使用_代替)
func main() {
var cityArray = [...]string{"北京", "上海", "广州", "深圳"}
for index, value := range cityArray {
fmt.Println(index, value)
}
}
多维数组(第一层可用...代替)
func main() {
a := [...][2]string{
{"北京", "上海"},
{"广州", "深圳"},
{"成都", "重庆"},
}
fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]
fmt.Println(a[2][1]) //支持索引取值:重庆
}
多维数组遍历
多层循环遍历
func main() {
a := [3][2]string{
{"北京", "上海"},
{"广州", "深圳"},
{"成都", "重庆"},
}
for _, v1 := range a {
for _, v2 := range v1 {
fmt.Printf("%s\t", v2)
}
fmt.Println()
}
}