天天看點

GO起步-數組數組

數組

主要定義方式為:數組名稱 [n] T (類型)表示擁有N個T類型的數組如:

var a [10]int 
#将變量a聲明為擁有10個整數的數組,數組是不可變的,定義後其大小不能改變。
fmt.Println(a)
#列印: [0 0 0 0 0 0 0 0 0 0]
var b[5]int={1,2,3,4,5}
fmt.Println(b)


      

數組初始化:

# 方法一:
var a=[5]int{1,2,3,4,5}
# 方法二:通過自變量在聲明數組的同時快速初始化數組
b:= [5]int{2,3,4,5,6}
數組長度不确定可以用...代替數組的長度,編譯器會根據元素個數自動推斷數組的長度:

var a =[...]int{2,3,4,5,6}
b:=[...]float32{1.0,2,3.5}


#另外一種定義方式:将索引為1和7的元素初始化,
這裡用用...代替數組的長度,編譯器自動推斷數組長度
d:=[...]int{1:5,7:6}      

多元數組

var c[3][5] int 
for i:=0;i<3;i++{
   for j:=0;j<5;j++{
      c[i][j]=i*j
   }
}      

數組的通路

a:=[5]int{1,2,3,4,5}
for i:=0;i<5;i++{
  fmt.println(i)
}
      

數組的切片操作

a:=[...]int{1,3,4,6,7}
b:=a[1:3]
fmt.Println(b) #    a[1]和a[2]
#   結果列印[3 4]  
c:=a[:4] #a[0]到a[3]不包括a[4]
fmt.Println(c)
結果列印:[1,3,4,6]
d:=a[2:] 從a[2]到a[4] 
fmt.Println(d)
結果列印 [4,6,7]      

數組切片是共享記憶體的,這裡不會存在資料複制,實際上切片賦予的變量隻是記錄了從哪裡切到哪裡

補充

短變量聲明::= 可在類型明确的地方代替var聲明。

比如x:=10 等價于var x int=10      

參考資訊:

https://coolshell.cn/articles/8460.html#%E6%95%B0%E7%BB%84 https://www.runoob.com/go/go-arrays.html http://tour.studygolang.com/basics/10

繼續閱讀