筆記會紀錄與已知的 Python 的差別,
或是對我來說比較需要記憶的部分。
初學 Go 不建議看這幾篇文章。
2021/10/15 更新:因為寫 merge sort 對 slice 的理解提升了一些,稍微對 array 和 slice 增加一些東西。
nil
arr := [5]string{"a", "b", ...略}
...
:後面有初始化,可以省略長度不用自己算有幾個~真聰明arr := [...]string{"Iron Man", "Dr.Stange", "Thor"}
range
:Python equivalence 為 enumerate
for i, v := range 陣列 {
fmt.Println(i, v)
}
這篇很詳細且有圖片[Golang] Slice and Array
[]int
是 int slice)arr := [5]string{"dog", "dog", "dog", "dog", "dog"}
slice := arr[1:4]
slice[0] = "cat"
// 這時 arr[1] 變為 cat
cap()
表示此 slice 開頭到 原來陣列的結尾 的長度arr[1:100] # python 會回 arr[1:5]
arr[1:100] // go:out of bounds for 5-element array)
make
動態產生 slice// len, cap = 2
slice1 := make([]string, 2)
// len 2 cap 5
slice2 := make([]string, 2, 5)
append
slice = append(slice, "new string")
cap *= 2
// 至少要說好 key 的型別
var m1 map[string]
// key 為 string,value 為 int
var m2 = map[string]int {"aaa": 30, "bbb": 45}
fmt.Println(m2["ccc"]) // 印出 0
v, keyExist = m2["ccc"]
for k, v := range m2 {
fmt.Println(k, v)
}
delete
刪除不存在的也不會噴錯delete(m2, "bbb")