package main /* 数组Array 定义数组的格式:var <varName> [n]<type>,n>=0 数组长度也是类型的一部分,因此具有不同长度的数组为不同类型 注意区分指向数组的指针和指针数组 数组在Go中为值类型 数组之间可以使用==或!=进行比较,但不可以使用<或> 可以使用new来创建数组,此方法返回一个指向数组的指针 Go支持多维数组 */ import ( "fmt" ) func main() { var a [2]string var b [1]int //不赋值都是0 d := [2]int{} e := [2]int{1, 2} f := [2]int{1} //后面不赋值是0 g := [20]int{19: 1} //前面19个元素是0,第20个元素是1 h := [...]int{1, 2, 3, 4, 5} //前面19个元素是0,第20个元素是1,数组长度自动计算是5 i := [...]int{0: 1, 1: 2, 2: 3, 3: 4} //通过下标指定数组的元素,数组长度自动计算是4 j := [20]int{19: 1} //数组长度自动计算是20,最后一个是1, var p *[20]int = &j //数组的指针 fmt.Println(p) fmt.Println(*p) fmt.Println(j) fmt.Println(&j) x, y := 1, 2 k := [...]*int{&x, &y} //指针数组 fmt.Println(k) //在其他语言中,数组是一个引用类型,函数传参的时候传递的是一个地址,go语言中数组是值传递 //函数传参的时候是传递的拷贝 a := [2]int{1, 2} b := [2]int{1, 2} fmt.Println(a == b) //true c := [2]int{1, 3} fmt.Println(a == c) //false d := [1]int{} // fmt.Println(a == d) //invalid operation: a == d (mismatched types [2]int and [1]int), //类型不同,不能进行比较,直接报错 p := new([10]int) //p是一个指向数组的指针 fmt.Println(p) //&[0 0 0 0 0 0 0 0 0 0], fmt.Println(*p) //[0 0 0 0 0 0 0 0 0 0] a := [10]int{} a[1] = 2 fmt.Println(a) //[0 2 0 0 0 0 0 0 0 0] fmt.Println(&a) //&[0 2 0 0 0 0 0 0 0 0] fmt.Println(*a) //报错 p := new([10]int) p[1] = 3 fmt.Println(p) //&[0 3 0 0 0 0 0 0 0 0] fmt.Println(*p) //[0 3 0 0 0 0 0 0 0 0] //二位数组 a := [5][3]int{ {1, 2, 3}, {4, 5, 6}, {1: 1}} fmt.Println(a) //[[1 2 3] [4 5 6] [0 1 0] [0 0 0] [0 0 0]] //冒泡排序 sort := [...]int{5, 7, 3, 2, 9, 0} fmt.Println(sort) num := len(sort) for i := 0; i < num; i++ { for j := i + 1; j < num; j++ { if sort[i] < sort[j] { temp := sort[i] sort[i] = sort[j] sort[j] = temp } } } fmt.Println(sort) }