數組(array)就是由若干相同類型的元素組成的序列。先看一個示例:
var ipv4[4]uint8=[4]uint8{192,168,0,1}
在這條賦值語句中,我為剛聲明的變量ipv4賦了值。在這種情況下,變量名右邊的
類型字面量可以省略。如果它在函數里面,那麼關鍵字var也可以省略,但賦值符號必
須由變為:=。
類型字面量[4]uint8表明這個變量的類型是長度為4且元素類型為uint8的數組類
型。注意,數組的長度是數組類型的一部分。只要類型聲明中的數組長度不同,即使兩
個數組類型的元素類型相同,它們也是不同的類型。更重要的是,一旦在聲明中確定了
數組類型的長度,就無法改變它了。
數組類型的零值一定是一個不包含任何元素的空數組。一個類型的零值即為該類型
變量未被顯式賦值時的默認值。以ipv4為例,其所屬類型的零值就是[4]uint8{}。
在上述示例中,等號右邊的字面量表示該類型的一個值。我們可以忽略那個在方括
號中表示數組長度的正整數值,示例如下:
[...Juint8{192,168,0,1}
方括號中的特殊標記...表示需由Go編譯器計算該值的元素數量並以此獲得其長度。
索引表達式和切片表達式都可以應用於數組值,前者會得到該數組值中的一個元素,
而後者則會得到一個元素類型與之相同的切片值。此外,Go的內建函數1en和cap也都
可以應用於數組值,並都可以得到其長度。
當需要詳細規劃程序所用的內存時,數組類型非常有用。使用數組值可以完全避免
耗時費力的內存二次分配操作,因為它的長度是不可變的。
閱讀更多 80後老程序員 的文章