同一種型別的集合稱之為陣列,陣列是一組已編號且長度固定的資料項序列,陣列中可以是任意的相同型別,陣列的長度必須是乙個常量或常量表示式,陣列的索引是從0開始,到len(array) - 1 的長度,陣列的長度必須在宣告時就固定下來。在go語言中,型別控制的是非常嚴格的,比如:[2]int 和 [3]int 就是兩種不同的型別。
func main()
a[0] = 1
a[1] = 2
// 宣告的時候初始化
b := [2]int
// 以元素的個數初始化
c := [...]int
// 以下標初始化
d := [4]int
// 以 new 初始化, 返回陣列的指標
e := new([5]int)
fmt.println(a)
fmt.println(b)
fmt.println(c)
fmt.println(d)
fmt.println(e)
// 輸出
// [1 2]
// [3 4]
// [5 6 7 8]
// [0 9 0 10]
// &[0 0 0 0 0]
}
func main() ,}
fmt.println(arr)
// 輸出:
// [[12 13 14] [15 16 17]]
}
能通過第一次的列印看出來,初始化出來的陣列都是值型別的,那麼陣列在函式間的傳遞也是值型別的嗎?
func arrprint(arr [4]int)
func main()
arrprint(arr)
fmt.println("main:",arr)
// 輸出:
// arrprint: [1 2 100 4]
// main: [1 2 3 4]
}
能過上面的例子,可以發現,上現函式中修改了陣列中的值,但是 main 函式中的列印並沒有改變,所以可以確定,陣列在函式間傳遞的時候就是值傳遞。
這樣又會造成乙個問題,因為值傳遞是陣列間的複製,如果乙個陣列小的時候,對效能影響不會很大,但是當乙個陣列非常大的時候,對程式的效能就會造成很大的影響了,所以為了解決這個問題,在使用陣列進行傳值的時候一般都會使用位址傳遞,在函式中使用指標型別的陣列進行接收。
在實際開發的時候,因為陣列的擴充套件性不好,所以一般不使用陣列,基本上使用的都是切片
陣列因為是值型別,所以,在型別完全相同的情況下支援使用==
!=
比較細節決定成敗!
個人愚見,如有不對,懇請斧正!
陣列的定義和使用
說到陣列,首先我們需要知道我們為什麼要定義陣列?方法返回值的時候只能返回乙個值,但是如果我們要返回多個值怎麼辦呢?這時候就需要用到陣列,可以把多個資料放在乙個陣列中,然後返回陣列,從而達到返回多個值的作用。那麼什麼是陣列呢?陣列是 相同資料型別的資料按 順序組成的一種 引用資料型別。陣列的定義分為兩...
陣列的定義和使用
一.陣列的定義 陣列從0開始,表示第乙個元素 1 root foundation77 mnt array 1 2 4 root foundation77 mnt echo 1 2 4 root foundation77 mnt 2 root foundation77 mnt array 1 one ...
java 陣列的定義和使用
1 基本概念 陣列 用於儲存多個相同型別資料的集合。優點 可以使用統一的方式進行管理。缺點 長度是固定的,有越界的風險。需要注意 陣列屬於引用資料型別,因此使用之前必須例項化。2 一維陣列的初始化方式 1 動態初始化 很常用 基本格式 資料型別 陣列名稱 new 資料型別 長度 方式一 int ar...