清華尹成帶你實戰GO案例(54)Go 陣列
Go 陣列
陣列是一個具有 相同資料型別 的元素組成的 固定長度 的 有序集合 。
在Go語言中,陣列是值型別,長度是型別的組成部分,也就是說" [10]int "和“ [20]int ”是完全不同
的兩種陣列型別。
同型別的兩個陣列支援"=="和"!="比較,但是不能比較大小。
陣列作為引數時,函式內部不改變陣列內部的值,除非是傳入陣列的指標。
陣列的指標:*[3]int
指標陣列:[2]*int
示例1:
輸出結果為
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
擁有固定長度 是陣列的一個特點,但是這個特點有時候會帶來很多不便,尤其在一個集合元素個數不固定
的情況下。這個時候我們更多地使用 切片 。
示例2:
可以用new建立陣列,並返回陣列的指標
輸出結果:
&[0 5 0 0 0] 5
示例3:
輸出結果:
[{0 User0} {8 User8}] 2
陣列是一個具有 相同資料型別 的元素組成的 固定長度 的 有序集合 。
在Go語言中,陣列是值型別,長度是型別的組成部分,也就是說" [10]int "和“ [20]int ”是完全不同
的兩種陣列型別。
同型別的兩個陣列支援"=="和"!="比較,但是不能比較大小。
陣列作為引數時,函式內部不改變陣列內部的值,除非是傳入陣列的指標。
陣列的指標:*[3]int
指標陣列:[2]*int
示例1:
package main
import "fmt"
func main() {
// 這裡我們建立了一個具有5個元素的整型陣列
// 元素的資料型別和陣列長度都是陣列的一部分
// 預設情況下,陣列元素都是零值
// 對於整數,零值就是0
var a [5]int
fmt.Println("emp:", a)
// 我們可以使用索引來設定陣列元素的值,就像這樣
// "array[index] = value" 或者使用索引來獲取元素值,
// 就像這樣"array[index]"
a[4] = 100
fmt.Println("set:", a)
fmt.Println("get:", a[4])
// 內建的len函式返回陣列的長度
fmt.Println("len:", len(a))
// 這種方法可以同時定義和初始化一個陣列
b := [5]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", b)
// 陣列都是一維的,但是你可以把陣列的元素定義為一個陣列
// 來獲取多維陣列結構
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
輸出結果為
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
擁有固定長度 是陣列的一個特點,但是這個特點有時候會帶來很多不便,尤其在一個集合元素個數不固定
的情況下。這個時候我們更多地使用 切片 。
示例2:
可以用new建立陣列,並返回陣列的指標
package main
import "fmt"
func main() {
var a = new([5]int)
test(a)
fmt.Println(a, len(a))
}
func test(a *[5]int) {
a[1] = 5
}
輸出結果:
&[0 5 0 0 0] 5
示例3:
package main
import "fmt"
func main() {
a := [...]User{
{0, "User0"},
{8, "User8"},
}
b := [...]*User{
{0, "User0"},
{8, "User8"},
}
fmt.Println(a, len(a))
fmt.Println(b, len(b))
}
type User struct {
Id int
Name string
}
輸出結果:
[{0 User0} {8 User8}] 2
[0x1f216130 0x1f216140] 2
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
相關文章
- 清華尹成帶你實戰GO案例(22)Go常量Go
- 清華尹成帶你實戰GO案例(28)Go 方法Go
- 清華尹成帶你實戰GO案例(35)Go 互斥Go
- 清華尹成帶你實戰GO案例(38)Go 介面Go
- 清華尹成帶你實戰GO案例(46)Go 排序Go排序
- 清華尹成帶你實戰GO案例(47)Go 切片Go
- 清華尹成帶你實戰GO案例(2) Go 字典Go
- 清華尹成帶你實戰GO案例(7)Go DeferGo
- 清華尹成帶你實戰GO案例(7)Go ExitGo
- 清華尹成帶你實戰GO案例(12)Go PanicGo
- 清華尹成帶你實戰GO案例(44)Go 命令列引數Go命令列
- 清華尹成帶你實戰GO案例(19)Go變數Go變數
- 清華尹成帶你實戰GO案例(23)Go 超時Go
- 清華尹成帶你實戰GO案例(29)Go 工作池Go
- 清華尹成帶你實戰GO案例(37)Go 集合功能Go
- 清華尹成帶你實戰GO案例(49)Go 時間Go
- 清華尹成帶你實戰GO案例(52)Go數值Go
- 清華尹成帶你實戰GO案例(57)Go通道方向Go
- 清華尹成帶你實戰GO案例(63)Go 指標Go指標
- 清華尹成帶你實戰GO案例(8)Go for迴圈Go
- 清華尹成帶你實戰GO案例(17) Go URL解析Go
- 清華尹成帶你實戰GO案例(20)Go 遍歷通道Go
- 清華尹成帶你實戰GO案例(25)Go 打點器Go
- 清華尹成帶你實戰GO案例(30)Go 關閉通道Go
- 清華尹成帶你實戰GO案例(39)Go 結構體Go結構體
- 清華尹成帶你實戰GO案例(40)Go 程式觸發Go
- 清華尹成帶你實戰GO案例(41)Go 程式執行Go
- 清華尹成帶你實戰GO案例(50)Go 時間戳Go時間戳
- 清華尹成帶你實戰GO案例(53)Go 數字解析Go
- 清華尹成帶你實戰GO案例(55)Go 隨機數Go隨機
- 清華尹成帶你實戰GO案例(58)Go通道緩衝Go
- 清華尹成帶你實戰GO案例(5)Go 自定義排序Go排序
- 清華尹成帶你實戰GO案例(10)Go JSON支援GoJSON
- 清華尹成帶你實戰GO案例(11)Go Line FiltersGoFilter
- 清華尹成帶你實戰GO案例(13)Go range函式Go函式
- 清華尹成帶你實戰GO案例(16)Go Switch語句Go
- 清華尹成帶你實戰GO案例(45)Go 命令列引數標記Go命令列
- 清華尹成帶你實戰GO案例(21)Go 並行通道ChannelGo並行