首頁  >  文章  >  後端開發  >  go語言如何判斷變數是slice還是array

go語言如何判斷變數是slice還是array

藏色散人
藏色散人原創
2021-01-05 15:50:213385瀏覽

go語言判斷變數是slice還是array的方法:1、判斷變數長度在確定的情況下是否不可修改,若不可更改則表示變數為array陣列;2、在括號中定義長度值,帶長度值是array數組,不帶則是slice切片。

go語言如何判斷變數是slice還是array

本教學操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn