go語言中陣列與切片的區別

2021-08-11 08:23:32 字數 1184 閱讀 1783

一句話總結:切片是動態陣列,注意兩者初始化和函式引數的區別

1、初始化:陣列需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變 

陣列: a := [...]int   a := [3]int

切片: a:= int  a := make(int, 5) a := make(int, 5, 10)

//var

a[...]int

=[...]int

//error

a:=[...]int
var

a2[3]int

=[3]int

切片不需要指定大小

var

sint

=int

2、函式傳遞:

陣列需要明確指定大小,切片不需要。陣列是值傳遞,切片是位址傳遞

package

main

import

"fmt"

func

changearray(a[3]int)

func

changeslice(sint)

func

main()

//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 ...