一、數組(類似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一樣
