go語言基礎資料結構學習---- 陣列, 列表(list)和切片(slice)
阿新 • • 發佈:2018-11-21
go語言基礎資料結構學習–> 陣列, 列表(list)和切片(slice)
go 語言中的 陣列是型別相同的元素的集合,
列表是雙鏈表的容器, 可以新增不同型別的資料
切片是對現有陣列的引用, 比陣列更方便靈活, 還可以追加資料
package main import ( "container/list" "fmt" ) func main() { // 切片 slice 比較常用, 很靈活 list1 := [6]int{1,2,3,4} //6是總數, 後面是值, 如果不夠會自動補0 list6 := []string{"a", "b"} var list2 [3]int // 宣告列表, 下面兩種為初始化, 生成記憶體地址, 雙鏈表 ----容器 var list3 = list.List{} list4 := list.New() //多維陣列 list5 := [3][2]string{ {"飛", "小"}, {"祥", "泰"}, {"德", "丙"}, } //列表插入方法 a1 := list3.PushFront(2) //從左插入 a2 :=list3.PushBack(1) //從右插入 list3.InsertAfter("after", a2) //在 a2之後 list3.InsertBefore("before", a1) //在 a1之前 //列表刪除 list3.Remove(a2) //列表(容器)遍歷 for x := list3.Front(); x != nil; x = x.Next() { if x.Value == "after" { fmt.Println(x.Value) } fmt.Print(x.Value, " , ") } //切片遍歷 for _,x := range list1{ if x == 1{ fmt.Println(x) } } //切片追加 list6 = append(list6, "c") //也可以和python一樣根據索引覆蓋值 list1[5] = 9 list2[2] = 9 fmt.Println(list1) fmt.Println(list2) printlist(list3) fmt.Println(list4) fmt.Println(list5) fmt.Println(list6) } func printlist(lists list.List) { for x := lists.Front(); x != nil; x = x.Next() { fmt.Println(x.Value) } }
參考學習文件:
https://www.cnblogs.com/liuzhongchao/p/9159896.html
http://c.biancheng.net/view/35.html