go語言學習總結之陣列和切片

2021-09-25 04:18:12 字數 1484 閱讀 1110

1、陣列在初始化的時候,需要指定大小,若不指定則會進行自動推算,而且陣列大小是不可變的。

2、陣列在作為函式的入參時,需要明確指定陣列大小,並且傳遞方式是值傳遞。

示例:

//陣列宣告和初始化

a :=

[...

]int

;//這裡需要注意,如果這樣宣告:a := int;則a為切片不是陣列

b :=[5

]int

;//作為函式函式傳入

func

arraycase

(array [5]

int)

func

main()

; fmt.

println

("before invoke arraycase:"

,array)

;arraycase

(array)

; fmt.

println

("after invoke arraycase:"

,array);}

//輸出結果如下:

before invoke arraycase:[1

2345

]in func arraycase:

[100

100100

100100

]after invoke arraycase:[1

2345

]

根據輸出結果可知,陣列在作為函式入參傳入的時候,需要明確指定陣列的大小,且是值傳遞的方式,也就是說傳遞的是對原陣列的拷貝,不影響原陣列的值。

//切片宣告和初始化

c :=

int;

//注意和陣列的區別

d :=

make([

]int,5

);//初始值都為0

e :=

make([

]int,5

,10);

//初始值都為0,宣告長度和容量

//新增元素增加切片的長度,要減少切片元素除了重新宣告再賦值之外,還有其他更好的辦法嗎,要是有的話請各位大佬指點一下

e =(e ,38)

;//作為函式函式傳入

func

slicecase

(slice [

]int

)func

main()

//輸出結果如下:

before invoke slicecase:[0

0000

]in func slicecase [

9999

999999]

after invoke slicecase:[99

9999

9999

]

根據輸出結果可知,切片在作為函式入參傳入的時候,無需制定切片大小,且是位址傳遞的方式,也就是說傳遞的是原切片的位址拷貝,在被調函式中對切片的操作都會根據位址間接定址到原切片,從而影響原切片的值。

GO語言學習之 陣列和切片 一

1.用var定義 必須給定長度 eg var arr 3 int 2.如果用 必須定義初值 eg arr 3 int 3.陣列長度定義為 這樣可以不用寫數字來定義長度,它會根據初值自動給與長度。否則陣列必須定義長度 arr3 int 最簡單的理解 空的陣列就是切片 我個人就是這樣來理解 eg var...

go語言學習 四 陣列和切片

在go語言中,陣列和切片都是集合型別,他們都是用來儲存同一種型別的元素。1.陣列型別的長度是固定的,而切片型別的長度是可變長的。如下面 宣告乙個長度為5的陣列s1和長度為5的切片s2,s1 5 int s2 int但是s1是不可變的,而s2是可變的,可以增加元素,長度隨著元素數量而增長。因此陣列是乙...

go語言學習 陣列 切片 map

go語言中陣列的特點 陣列的長度是固定的,並且長度也是陣列型別的一部分 是值型別,在賦值或者作為引數傳遞時,會複製整個陣列,而不是指標 定義陣列的語法 var arr1 5 int 5 int 未初始化的值,就預設初始化為該型別的預設值 var arr2 int 3 int 長度可由初始化的元素個數...