go語言判斷變數是slice還是array的方法:1、判斷變數長度在確定的情況下是否不可修改,若不可更改則表示變數為array陣列;2、在括號中定義長度值,帶長度值是array數組,不帶則是slice切片。
本教學操作環境:Windows7系統、Go1.11.2版,Dell G3電腦。
推薦:《go語言教學》
#golang中判斷變數是array還是slice
golang中判斷變數是array還是slice
Array和Slice兩者的差異兩者最大的差異是數組長度一旦確定就無法修改,無法變長,無法改短。而切片則通過伸縮容量。且陣列是值類型,把一個陣列賦予給另一個陣列時是發生值拷貝,而切片是指標類型,拷貝的是指標。
下面透過一個實例來說明:
程式碼如下圖,(1)是定義一個[3]int型別數組,依序賦值為1,2,3。 (2)將陣列a賦值給b,將發生值拷貝。 (3)將數組a的下標2的元素賦值為4,並不會影響數組b的內容。 (4)列印結果,得以說明情況。 在看另一段程式碼:(1)不指定長度,(2)列印結果,顯示有對a的修改影響了b的內容。
為何一個細微的變化有如此差異呢? 這個便是Array和Slice定義時語法上的細微差異:在括號中定義一個長度值,是編譯器區別變數a資料型別的
唯一依據,
帶長度值便是數組,不帶便是切片。
再回到題主的疑問,下面變數如何區分:
var a1 []int ---> 無長度定義,是Slice
var a2 [ 2]int ---> 有長度定義,是Array
var a3 [3]*int---> 有長度定義,是Arrayvar a4 [4][ 3]int ---> 有長度定義,是Array,只不過是一個二維陣列。
###更多程式相關知識,請造訪:###程式設計教學###! ! ###以上是go語言如何判斷變數是slice還是array的詳細內容。更多資訊請關注PHP中文網其他相關文章!