go语言中的数组

时间:2021-03-21 20:18:48
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);
}