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);
}