一、定义数组
定义的格式:var<var Name> [n] <type>, n>=0;
列:var a [2] int 长度为2的int型数组;输出:[0 0]
a := [2]int{1}等同于 a := [3]int{0:1,1:0}
长度为2的int型数组;输出:[1 0]
a := [3]int{2:1} 等同于 a := [3]int{0:0,1:0,2:1}
长度为3的int型数组;输出:[0 0 1]
不指定数组长度,列
a := [...] int {2,1,9,6,5}go语言会创建长度为5的int型数组;
a := [...] int {19:1} go语言会创建长度为20的int型数组;
二、数组指针和指针数组
数组指针
a := [...] int {19:1}
var p *[20] int = &a
fmt.Println(p)
指针数组
x,y := 1,2
a := [...] *int {&x:&y}
fmt.Println(a)
三、数据传递和比较
go语言中数组为值类型,传递数组时是传递整个数组的拷贝,而不是传递地址给方法或函数;
#######数组之间可以使用==和!=比较,(数组长度也是类型的一部分,因此具有不同长度的数组为不同类型,不能进行==和!=比较)
a := [2] int {2,1}
b := [2] int {2,5}
fmt.Println(a==b) 输出false
a := [2] int {2,1}
b := [2] int {2,1}
fmt.Println(a==b) 输出true
a := [3] int {2,1,3}
b := [2] int {2,1}
或
a := [2] string{"2","1"}
b := [2] int {2,1}
fmt.Println(a==b) 类型不一致不能进行比较
四、数组单个元素赋值
a := [10] int{}
a[1] =2
fmt.Println(a)
p:=new ([10]int)
p[1]=2
fmt.Println(p)
五、多维数组
a:=[2][3]{{1,2,3},{1,1,2}} 2个长度为3的数组元素
输出[[1 2 3][1 1 2]]
同一维数组
a:=[2][3]{{1:3},{0:2}}
输出[[0 3 1][2 0 0]]
六、冒泡排序(由大到小)
a := [...]int{1, 6, 5, 8, 10, 2}
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)
网友评论