筆記會紀錄與已知的 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)
appendslice = 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")