數組和切片的區別


go中的數組和切片的區別和用法

 

var  arr1 [3]int
var  arr2 [3]int = [3]int{1, 2, 3}
fmt.Println(arr1)
fmt.Println(arr2)

 我聲明兩個數組,初始化和沒初始化的

 然后運行這段代碼輸出為[0 0 0] [1 2 3] 有沒有發現和其他語言不一樣的地方,細心的朋友應該已經發現了 在go語言里默認為0值

D:/program/GoLang/hello golang/src/b/b.exe  [D:/program/GoLang/hello golang/src/b]
[0 0 0]
[1 2 3]
成功: 進程退出代碼 0.

然后我們再來看看切片,切片和數組很像。可以說是一種特殊數組

var  slice []int = []int{3, 6}
fmt.Println(slice)
slice = append(slice, 1, 2, 3, 5, 8)
fmt.Println(slice)

這里聲明了一個slice int類型的數組切片 切片的長度是可變的,我們可以通過append方法向里面添加同類型的值

運行代碼控制台 打印的和我們預想的完全一樣

[3 6]
[3 6 1 2 3 5 8]
成功: 進程退出代碼 0.

上面我們講述了切片和數組的用法,現在來看看他們的區別

fmt.Println( "數組***********************************" )
var  arr1 [3]int = [3]int{1, 2, 3}
var  arr2 [3]int = arr1
fmt.Println(arr1, arr2)
arr2[0] = 10002
fmt.Println(arr1, arr2)
 
fmt.Println( "切片***********************************" )
var  slice1 []int = []int{1, 2, 3}
var  slice2 []int = slice1
fmt.Println(slice1, slice2)
slice2[0] = 10002
fmt.Println(slice1, slice2)

輸出結果如下 可以看出數組是值拷貝而切片是引用

數組***********************************
[1 2 3] [1 2 3]
[1 2 3] [10002 2 3]
切片***********************************
[1 2 3] [1 2 3]
[10002 2 3] [10002 2 3]
成功: 進程退出代碼 0.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM