定义数组的格式:var <varName> [n] <type>
数组长度也是类型的一部分,因此具有不同长度的数组为不同类型;
注意区分指向数组的指针和指针数组;
数组在Go中为值类型;
数组之间可以使用==
或!=
进行比较,但不可以使用<
或>
;
可以使用new
来创建数组,此方法返回一个指向数组的指针。
// 定义数组a
var a[2]int
// 定义数组b
var b[3]int
// 不能进行比较
// 编译不能通过:invalid operation: a == b (mismatched types [2]int and [3]int)
fmt.Println(a==b)
a := [2]int{1,2}
fmt.Println(a) //打印:[1 2]
// 第二元素不写,默认为0
b := [2]int{1}
fmt.Println(b) //打印:[1 0]
c := [...]int{1,2,3,4,5}
// 打印数组长度
fmt.Println(len(c)) //打印:5
// 设置数组索引为99的元素值为1
d := [...]int{99:1}
fmt.Println(len(d)) //打印:100
指针数组、指向数组的指针
// 定义2个变量
x,y := 1,2
// 定义指针数组
a := [2]*int{&x,&y}
fmt.Println(a) //打印:[0xc00001a050 0xc00001a058]
b := [2]int{2,3}
// 指向数组的指针
var p *[2]int = &b
fmt.Println(p) //打印:&[2 3]
new关键字
// 返回一个指向数组的指针
p := new([10]int)
fmt.Println(p) //打印:&[0 0 0 0 0 0 0 0 0 0]
多维数组
a := [2][3]int{
{1,2,3},
{2,2,3},
}
fmt.Println(a) //打印:[[1 2 3] [2 2 3]]
冒泡排序
a := [...]int{5,2,6,3,9}
fmt.Println(a)
count := len(a)
for i:=0;i<count;i++ {
for j:=i+1;j<count;j++ {
if a[i] < a[j] {
temp := a[i]
a[i] = a[j]
a[j] = temp
}
}
}
fmt.Println(a) //打印:[9 6 5 3 2]