一.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
}
}
}