数组:一段固定长度的内存区域。
数组声明时就确定,使用时可以修改成员,但是数组大小不可变化。
注意:与其他语言不同的是数组在Go语言中是值类型,而在其他语言中是值类型。
var 数组变量名 [元素数量]T
- T表示任意基本类型,包括数组本身。当类型为数组本身时,可表示二维数组
例如:
var team [3]string
team[0] ="hammer"
team[1] ="soldier"
team[2] ="mum"
fmt.Println(team)
输出:[hammer soldier mum]
var team =[3]string{"hammer","soldier","mum"}
第二种:
var team =[...]string{"hammer","soldier","mum"}
//...是为了让编译器确定数组的大小
第三种:
team :=[20]int{19:1}
//这个意思是将这个为20个元素的数组索引为19为置设为1
//那么当然另外...的方式也可以赋值
team := [...]int{19:1}
var team =[...]string{"hammer","soldier","mum"}
for k,v :=range team{ //k,v分别表示数组的索引和数组的每个元素值
fmt.Println(k,v)
}
代码输出:
0 hammer
1 soldier
2 mum
4.指向数组的指针和指针数组
//指向数组的指针
team :=[20]int{19:1}
var p *[20]int=&a
fmt.Println(p)
//指针数组
x,y := 1,2
p :=[...]*int{&x,&y}
fmt.Println(p)
输出是:
5.在Go语言中数组可以使用==或者!=比较(但仅限于相同类型之间,如果长度不一样也不可以),但是不可以使用<或者>判断两个数组。
6.用new来创建数组
用new可以创建一个数组,会返回一个指向数组的指针。
p :=new([10]int)
fmt.Println(p)
输出:
7.多维数组
p := [2][3]int{
{1, 1, 1},
{2, 2, 2}}
//特别注意在写多维数组的时候,最后一个右括号要和最后一组数组的右括号放在一起
fmt.Println(p)
注意:Go语言二维数组和C语言一样,顶级的数字也就是行可以写成…(C语言中不写),非顶级数字也就是列不可以写成…
8.Go语言实现冒泡排序
package main
import (
"fmt"
)
func main() {
a := [...]int{5, 2, 6, 3, 9}
fmt.Println(a)
num := len(a)
for i := 0; i < num; i++ {
for j := 1; j < num-i; j++ {
if a[j] < a[j-1] {
temp := a[j]
a[j] = a[j-1]
a[j-1] = temp
}
}
}
fmt.Println(a)
}