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 長度可由初始化的元素個數...