一句話總結:切片是動態陣列,注意兩者初始化和函式引數的區別
1、初始化:陣列需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變
陣列: a := [...]int a := [3]int
切片: a:= int a := make(int, 5) a := make(int, 5, 10)
//vara[...]int
=[...]int
//error
a:=[...]int
var切片不需要指定大小a2[3]int
=[3]int
var2、函式傳遞:sint
=int
陣列需要明確指定大小,切片不需要。陣列是值傳遞,切片是位址傳遞
packagemain
import"fmt"
funcchangearray(a[3]int)
funcchangeslice(sint)
funcmain()
//error
a:=[...]int
changearray(a)
fmt.println(a[0])//值傳遞
vara2[3]int
=[3]int
a2[2]=77
varsint
=int
fmt.println(len(s),cap((s)))
s=6,7,
8)
fmt.println(len(s),cap(s))
changeslice(s)
fmt.println(s[0])//位址傳遞
}
14 4
7 8100
成功: 程序退出** 0.
GO語言中的切片
宣告乙個切片int型的切片 var s int 初始化乙個長度為len,容量為cap的切片 s make int,len,cap cap可以省略,省略後cap等於len 也可以簡潔的初始化 s make int len,cap 還可以指定值的建立切片 s int 指定索引值式的建立 s int 索引...
go語言的陣列和切片區別
這裡不介紹陣列和切片的使用技巧,主要看下2者的區別。首先看下它們的定義 看乙個陣列的例子 varx 3 int 3 int vary 3 int x fmt.println x,y y 0 999 fmt.println x,y 輸出結果如下,可以發現y的內容變了,但是x沒有變 1 2 3 1 2 ...
go語言的陣列和切片區別
這裡不介紹陣列和切片的使用技巧,主要看下2者的區別。首先看下它們的定義 看乙個陣列的例子 var x 3 int 3 int var y 3 int x fmt.println x,y y 0 999 fmt.println x,y 輸出結果如下,可以發現y的內容變了,但是x沒有變 1 2 3 1 ...