package main
import"fmt"funcmain(){
a :=[2]int{1}
fmt.Println(a)// 索引赋值,给索引为10的元素赋值3
b :=[20]int{10:3}
fmt.Println(b)// 由系统自动计算数组长度
c :=[...]int{1,2,3,4}
fmt.Println(len(c))}
数组的长度也是类型的一部分,因此不同长度的数组为不同类型
package main
import"fmt"funcmain(){var a [2]intvar b [1]int
a = b // cannot use b (type [1]int) as type [2]int in assignment
fmt.Println(a)}
注意区分指向数组的指针和指针数组
package main
import"fmt"funcmain(){
a :=[...]int{99:1}// 指向数组的指针var p *[100]int=&a
fmt.Println(p)
x, y :=1,2// 数组指针,存放的是指针
b :=[...]*int{&x,&y}
fmt.Println(b)}
数组在Go中为值类型,即当将数组传递到方法或者函数中,是将整个数组拷贝,而不是传数组的地址。
数组之间可以使用==或!=进行比较,但不可以使用>或<
package main
import"fmt"funcmain(){
a :=[2]int{1,2}
b :=[2]int{1}
c :=[3]int{1,2}
fmt.Println(a == b)// false// 数组长度不同,类型不同,无法直接比较
fmt.Println(a == c)// invalid operation: a == c (mismatched types [2]int and [3]int)}
可以使用new来创建数组,此方法返回一个指向数组的指针
package main
import"fmt"funcmain(){// 用new创建数组,返回的是数组的指针
p :=new([5]int)// 不论是指向数组的指针,还是数组都可以通过索引改变值
p[1]=2
fmt.Println(p)// &[0 0 0 0 0 0 0 0 0 0]}
Go支持多维数组
package main
import"fmt"funcmain(){
a :=[2][3]int{{1,2,3},{4,5,6}}
fmt.Println(a)}
冒泡排序
package main
import"fmt"funcmain(){
a :=[...]int{5,2,6,3,9}
fmt.Println(a)
num :=len(a)for i :=0; i < num; i++{for j := i +1; j < num ; j++{if a[i]< a[j]{
temp := a[i]
a[i]= a[j]
a[j]= temp
}}}
fmt.Println(a)}