golang 包含 陣列 Golang 陣列與分片

2021-10-13 05:48:40 字數 980 閱讀 2312

與陣列的區別陣列是固定長度的,而分片確實可動態增長的,以定義為例:// 定義陣列, 一定要指定長度var names [5]string// 定義分片, 不需要指定長度var names string在函式呼叫時, 陣列是值傳遞,而分片是引用傳遞

其實對於 golang 來講,函式呼叫的時候都是值傳遞,拷貝乙個副本, 之所以表現為值傳遞和引用傳遞,在於乙個拷貝的是資料值,另乙個拷貝的是資料指標,兩個指標值指向的是同乙個記憶體位址。

分片的實現

分片的底層資料還是使用的陣列,它一共包含 3 個字段:位址指標

長度容量// source 是乙個分片, 大小為 4, 容量為: 5source := make(string, 4, 5)

fmt.println(source, len(source), cap(source))// 輸出: [    1] 5 5

fmt.println("source-->", source)

fmt.println("copied-->", copied)

fmt.println("source-->", source)

fmt.println("copied-->", copied)

輸出:source--> [1 2 3 4 5]copied--> [3]接下來修改 copied 的內容,看是否會對 source 產生影響...source--> [1 2 3 mike 5]copied--> [3 mike]

fmt.println("copied-->", copied)

fmt.println("source-->", source)

fmt.println("copied-->", copied)

輸出:source--> [1 2 3 4 5]

copied--> [3]

接下來修改 copied 的內容,看是否會對 source 產生影響...

source--> [1 2 3 4 5]

copied--> [3 mike]

golang 包含 陣列 Golang陣列型別

陣列 陣列是指一系列同一型別資料的集合。陣列中包含的每個資料被稱為陣列元素 element 乙個陣列包含的元素個數被稱為陣列的長度。1.宣告方法 32 byte 長度為32的陣列 2 n struct 複雜型別陣列 100 float64 指標陣列 3 5 int 二維陣列 2 2 2 float6...

golang學習筆記 優雅的退出golang服務

寫了一段時間的golang後台,怎麼優雅的退出程式一直是乙個很模糊的問題。思路還是之前的思路,各種標誌和變數來回控制,雖然說是能夠滿足需求,但是總感覺那開啟的姿勢不對,下面對優雅的退出golang做乙個小總結,廢話不多說,直接上 主程式 模擬乙個服務物件,函式reload和close分別是過載和退出...

golang學習筆記 優雅的退出golang服務2

前不久介紹了如何比較 優雅的退出golang服務 雖然能夠優雅的退出,但是只是簡單的監聽了系統的訊號,後續服務模組得到資源釋放又牽扯到更多的邏輯。對於服務啟動的子協程的宣告週期顯然沒有考慮到。經過一些時間的實踐和閱讀大佬們的 對如何優雅的退出golang服務再做乙個簡單的記錄。乙個供外部呼叫的釋放資...