到目前为止,我们创建的数组都是一维的。go中也可以创建多维数组。
package main
import (
"fmt"
)
func printarray(a [3][2]string) {
for _, v1 := range a {
for _, v2 := range v1 {
fmt.Printf("%s ", v2)
}
fmt.Printf("\n")
}
}
func main() {
a := [3][2]string{
{"lion", "tiger"},
{"cat", "dog"},
{"pigeon", "peacock"}, //这个逗号是必须的,如果省略,编译器就会报错。这是因为lexer根据简单的规则自动插入分号,详情阅读https://golang.org/doc/effective_go.html#分号。
}
printarray(a)
var b [3][2]string
b[0][0] = "apple"
b[0][1] = "samsung"
b[1][0] = "microsoft"
b[1][1] = "google"
b[2][0] = "AT&T"
b[2][1] = "T-Mobile"
fmt.Printf("\n")
printarray(b)
}
在上面的程序中,先声明了一个二维字符串数组a
。
然后声明了二维数组b
,并给其元素赋值。
以上程序的输出为
lion tiger
cat dog
pigeon peacock
apple samsung
microsoft google
AT&T T-Mobile
虽然数组似乎足够灵活,但它们有一个限制,即数组长度是固定的,不能变化,这就是使用切片(slice)的原因,实际上,go中切片比传统数组更常见。