package main;
import (
"fmt"
)
func main() {
//声明一个数组
var a [3]int;
a = [3]int{1, 2, 3};
//声明并赋值
var b [3]int = [3]int{1, 2, 3};
//声明并赋值(省略类型)
var c = [3]int{1, 2, 3};
//声明并赋值简写
d := [3]int{1, 2, 3};
//GO中将数组长度作为数组类型的一部分
//e与f是两个类型不同的变量,他们之间不能进行赋值操作
var e [2]int;
var f [3]int;
//指定下标初始零值,将最后一个元素设置为1
var g [20]int = [20]int{19: 1};
//使用...让GO自动计算数组长度
h := [...]int{1, 2, 3, 4, 5};
//GO自动计算所需的数组长度,同变量g
i := [...]int{19: 1};
//数组的元素是指针,j数组的元素是指向int的指针
aa := 1;
bb := 2;
j := [...]*int{&aa, &bb};
//指向数组的指针
k := [5]int{1, 2, 3, 4, 5};
//m是一个指向数组的指针
var m *[5]int = &k;
//数组的比较
n := [2]int{1, 2};
o := [2]int{1, 2};
//通过new返回一个指向数组的指针
p := new([2]int);
//也可以使用[]进行赋值
p[0], p[1] = 1, 2;
//多维数组,二行二列
q := [2][2]int{{1, 2}, {3, 4}};
//自动计算多维数组,必须是顶级
r := [...][2]int{{1, 2}, {3, 4}, {5, 6}};
fmt.Printf("%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n%v\n", a, b, c, d, e, f, g, h, i, j, m);
//进行数组比较
fmt.Println(n == o);
fmt.Println(p);
fmt.Println(q);
fmt.Println(r);
}