一、數組(類似python的list)
數組的長度一旦定義了就不能動態增長。並且存儲的數據類型必須相同。
創建方法:
var 數組名 [長度]數據類型
例如:
package main import "fmt" func main(){ var l [5]int //定義l名字,長度為5,數據類型為int的數組 l[0] = 1 //賦值 l[1] = 2 l[2] = 3 l[3] = 4 fmt.Println(l) fmt.Println(l[2]) fmt.Println(l[1:3]) //輸出1到3的數組 fmt.Println(l[0:]) //0到結尾 fmt.Println(l[:3]) //0到3 } ##結果## [1 2 3 4 0] 3 [2 3] [1 2 3 4 0] [1 2 3]
數組的四種初始化方式
例如:
var s1 [3]int = [3]int{1,2,3} fmt.Println("s1",s1) var s2 [4]int = [...]int{5,6,7,8} //[...]是固定寫法 fmt.Println("s2",s2) var s3 = [2]int{9,10} //第一種的簡化 fmt.Println("s3",s3) var s4 = [...]int{3:43,1:41,0:40,2:42} //類似鍵值對 fmt.Println("s4",s4) ##結果## s1 [1 2 3] s2 [5 6 7 8] s3 [9 10] s4 [40 41 42 43]
數組的遍歷
例如:
var s4 = [...]int{3:43,1:41,0:40,2:42} //類似鍵值對 fmt.Println("s4",s4) for index,value := range s4{ fmt.Println(index,value) } #結果## 0 40 1 41 2 42 3 43
二、slice切片
1、切片是數組的引用
2、切片的使用類似數組,如遍歷
3、切片的長度是可變的
創建語法
var 切片名 []類型
如:
var qiepian []int
切片例子:
###例子一
var suzhu [4]int = [...]int{5,6,7,8} slice := suzhu[1:4] //1到4的值,不包含4 fmt.Println(suzhu) fmt.Println(slice) fmt.Println("切片的容量",cap(slice)) ##結果 [5 6 7 8] [6 7 8] 切片的容量 3
###例子二、使用make創建切片 var slice []int = make([]int,4,10) //類型,大小(長度),容量(可選),容量必須大於長度 slice[0] = 10 slice[1] = 11 fmt.Println(slice) ##結果## [10 11 0 0] ###例子三 var slice []int = []int {2,4,6} fmt.Println(slice) ##結果## 2 4 6
切片的append追加
例如:
var slice []int = []int {2,4,6} fmt.Println(slice) //使用append直接追加切片內容(類似python list的append) slice = append(slice,8,10) fmt.Println(slice) slice = append(slice,slice...) //追加切片,...是固定寫法 fmt.Println(slice) ###結果### [2 4 6] [2 4 6 8 10] [2 4 6 8 10 2 4 6 8 10]
切片的copy操作
使用copy內置函數
例如:
var slice []int = []int {2,4,6} fmt.Println(slice) var slice2 []int = make([]int,5) fmt.Println(slice2) copy(slice2,slice) //將slice復制給slice2 fmt.Println(slice) fmt.Println(slice2 ##結果## [2 4 6] [0 0 0 0 0] [2 4 6] [2 4 6 0 0]
使用切片改變字符串的內容
例子:
var str string = "hello" fmt.Println(str) arr := []byte(str) arr[1] = 'a' //轉成字符串 arr1 := []rune(str) //中文轉換 arr1[0] = '狗' fmt.Println(arr) str = string(arr) fmt.Println(str) str = string(arr1) fmt.Println(str) ##結果## hello [104 97 108 108 111] hallo 狗ello
map(類似python的dict)
map是key-value數據結構(類似python的dict)
map是無序存儲的
創建map語法
var map 變量名 map[keytype]valuetype
如:
var m1 map[string]string var m2 map[string]int var m3 map[int]string var m4 map[string]map[string]string
使用例子:
package main import "fmt" func main(){ var m1 map[string]string //在使用map前,需要先make,make的作用技術給map分配數據空間 m1 = make(map[string]string) m2 := map[string]string{ //使用方式二 "a1" : "q1", "a2" : "a2", } m1["s1"] = "亞索" m1["s2"] = "蓋倫" fmt.Println(m1) fmt.Println(m1["s1"]) fmt.Println(m2) } ###結果### map[s1:亞索 s2:蓋倫] 亞索 map[a1:q1 a2:a2]
map的增刪改查
增、改
map[key] = value //沒有就增加,存在就修改
刪
delete(map,key)
查
map[key] //對應的value,和python的dict一樣