与PHP比较
- go中数组是固定长度的
- 元素必须是同一类型的数据集合
- 声明的时候必须制定元素类型和数组长度
go中的数组可以理解为是PHP中的索引数组
声明方式
- 数组类型: [N]T
- 切片类型: []T
- 映射类型: map[K]T
其中:
T可以任意类型.元素的类型必须是同一种类型
N必须为一个非负整数常量.指定了数组类型的长度
K必须为一个可比较类型.它指定了一个映射类型的键值烈性
不可比较类型(不支持使用==和!=):
- 切片类型
- 映射类型
- 函数类型
- 任何包含有不可比较类型的字段的结构体类型和任何元素类型为不可比较类型的数组类型。
其他均为可比较类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// 数组类型
[5]string
[Size]int
[16][]byte // 此数组类型的元素类型为一个切片类型:[]byte
[100]Person // 此数组类型的元素类型为一个结构体类型:Person
// 切片类型
[]bool
[]int64
[]map[int]bool // 此切片类型的元素类型为一个映射类型:map[int]bool
[]*int // 此切片类型的元素类型为一个指针类型:*int
// 映射类型
map[string]int
map[int]bool
map[int16][6]string // 此映射类型的元素类型为一个数组类型:[6]string
map[bool][]string // 此映射类型的元素类型为一个切片类型:[]string
map[struct{x int}]*int8 // 此映射类型的元素类型为一个指针类型:*int8,
// 它的键值类型为一个结构体类型。因为go中数组属于值类型,也可以通过
new
进行初始化new[5]int
一维数组和多维数组
go中的数组和PHP一样可以定义一维数组,和多维数组
访问数组
1 | func main() { |
遍历数组
1 | func main() { |
代码实例
1 | var multi [9][9]string |