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