一.array数组
var arr [10]int // 声明了一个int类型的数组
arr[0] = 42 // 数组下标是从0开始的
arr[1] = 13 // 赋值操作
fmt.Printf("The first element is %d\n", arr[0]) // 获取数据,返回42
fmt.Printf("The last element is %d\n", arr[9]) //返回未赋值的最后一个元素,默认返回0
a := [3]int{1, 2, 3} // 声明了一个长度为3的int数组
b := [10]int{1, 2, 3} // 声明了一个长度为10的int数组,其中前三个元素初始化为1、2、3,其它默认为0
b := [10]int{9:1}//初始化数组 第十个元素是1 其他都是0
c := [...]int{4, 5, 6} // 可以省略长度而采用...
的方式,Go会自动根据元素个数来计算长度
c := [...]int{9:1}//初始化数组 第十个元素是1 其他都是0 现在的长度是10 采用尽可能满足情况
//指针
b := [10]int{9: 1}
var p *[10]int = &b //这样出来前面有个 & 如:& [0 0 0 0 0 0 0 0 0 1]
//var m = &b 这样是不行的
// 声明了一个二维数组,该数组以两个数组作为元素,其中每个数组中又有4个int类型的元素
doubleArray := [2][4]int{[4]int{1, 2, 3, 4}, [4]int{5, 6, 7, 8}}
// 上面的声明可以简化,直接忽略内部的类型
easyArray := [2][4]int{{1, 2, 3, 4}, {5, 6, 7, 8}}
//go语言中指针是值类型不是引用类型
x,y := 1,2
a := [...]*int{&x,$y}
fmt.Println(a)
这里输出的是变量x和y的内存地址
//数组之间可以使用==或!=进行比较,但不可以使用<或>
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{1}
fmt.Println(a==d)//报错 相当于数据类型不对
//可以使用new来创建数组,此方法返回一个指向数组的指针
p := new([10]int)
fmt.Println(p)//返回 &[0 0 0 0 0 0 0 0..]
p[1] = 2
fmt.Println(p)//返回 &[0 2 0 0 0 0 0 0..]
//Go支持多维数组
a := [2][3]int{
{1,2,3},
{2,3,4}
}
fmt.Println(p)//返回 [[1 2 3] [2 3 4]]
a := [2][3]int{
{1:1},
{2:2}
}
//Go语言版冒泡排序
a := [...]int{5,3,4,9,8,7}
fmt.Println(a)
num := len(a)
for i :=0;i<num;i++{
for j :=i;j<num;j++{
if a[i] < a[j] {
temp := a[i]
a[i] = a[j]
a[j] = temp
}
}
}