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

2021-10-01 06:22:37 字數 1269 閱讀 6931

1.用var定義(必須給定長度)

eg: var arr [3] int

2.如果用:=(必須定義初值

eg: arr := [3]int

3.陣列長度定義為[...],這樣可以不用寫數字來定義長度,它會根據初值自動給與長度。否則陣列必須定義長度

arr3 := […]int

最簡單的理解:空的陣列就是切片 (我個人就是這樣來理解)

eg:var arr  int    不定義長度和初始值

陣列它是值型別 ,而切片時指標型別,

一般初始化的時候陣列的長度液晶是固定的了,而切片不是,它是乙個動態的陣列切片的底層是陣列,而切片的底層是陣列

關於迴圈:

陣列迴圈有2種方式:

eg: arr := [3]int

for i:=0 ; i注意點:  函式傳遞時傳遞陣列,那就必須要傳遞乙個陣列長度相同的陣列變數,因此 在實際開發中 ,我們常用的是切片

new 可以用來初始化泛型,並且返回儲存位址。所以通常我們會用指標變數來接收 new 過後。特別注意的是,

new 會自動初始化型別,也就是字串會是"",number 會是 0,而 channel, func, map, slice 等等則會是 nil。

因為這個特性,如果我們對 map 做以下的操作的話,會出現 panic: assignment to entry in nil map

func main()

初始化的 map 預設是 nil map,所以直接使用就會報assignment to entry in nil map 的錯誤。

如果用 struct 做初始化,也可以直接用 & 代表指向的位址

ype user struct 

func main() //這個可以自定義屬性

//或者

p := new(user)//這個全部講屬性賦予進去

}

make 與 new 不同,是用來初始化 channel, map, slice 等等。另外特別要注意的是 make 並不會傳回指標,如果要拿到指標,就要考慮用像是 new 的方式來初始化.

func main() 

func main()

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

1 陣列在初始化的時候,需要指定大小,若不指定則會進行自動推算,而且陣列大小是不可變的。2 陣列在作為函式的入參時,需要明確指定陣列大小,並且傳遞方式是值傳遞。示例 陣列宣告和初始化 a int 這裡需要注意,如果這樣宣告 a int 則a為切片不是陣列 b 5 int 作為函式函式傳入 func ...

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