內置函數 1.close: 主要是用來關閉channel 2.len:用來求長度,比如string、array、slice、map、channel 3.new與make都是用來分配記憶體 new用來分配值類型,如int、string,返回的是指針 make用來分配引用類型,如chan、map、slic ...
內置函數 1.close: 主要是用來關閉channel 2.len:用來求長度,比如string、array、slice、map、channel 3.new與make都是用來分配記憶體 new用來分配值類型,如int、string,返回的是指針 make用來分配引用類型,如chan、map、slice new創建的指針指向變數,make進行變數的初始化 4.append用來追加元素到數組、slice中 5.panie和recover,用來做錯誤處理 閉包 1。一個函數和與其相關的飲用環境組合而成的實體 package main import "fmt" func Addr() func(int) int { var x int return func(d int) int { x +=d return x } } func main() { f := Addr() fmt.Println(f(1)) fmt.Println(f(100)) fmt.Println(f(1000)) } 數組 1.數組: 是同一種數據類型的固定長度的序列 2.數組定義 var a [len]int 3.長度是數據類型的一部分,因此,var a[5] int和var a[10] int是不同類型 4.數據可以通過下標進行訪問,下標是從0開始,最後一個元素的下標為len-1 5.訪問越界,如果下標在數組合法範圍之外,則觸發訪問越界,會panic 6.數組的初始化 a.var age() [5]int = [5] int{1,2,3,4,5} b.var age() = [5]int{1,2,3,4,5} c.var age = [...]int {1,2,3,4,5} d.var str = [5]string{3:"hello world",4:"tom"} 7.多維數組 a.var age [5][3]int b.var f [2][3]int = [...][3]int{{1,2,3},{4,5,6}} 切片 1.切片,切片是數組的一個引用,因此切片是引用類型 2.切片的長度可以改變,因此,切片是一個可變數組 3.切片遍歷方式和數組一樣,可以用len()求長度 4.cap可以求出slice最大的容量,0<=len(slice) <=cap(array),其中arrayshi slice引用的數組 5.切片的定義 var 變數名 []類型,比如 var str []string var arr []int 6.切片的初始化: var slice []int = arr[start:end] var slice []int = arr[0:end] 簡寫為 var slice []int = arr[:] var slice []int = arr[start:len(arr)]簡寫為var slice[]int = arr[start:] var slice []int = arr[0,len(arr)]簡寫為 var slice[]int = arr[:] 7.通過make創建切片 var slice []type = make([]type,len) slice := make([]type,len) slice := make([]type,len,cap) 8.用append內置函數操作切片 slice = append(slice,10) var a = []int {1,2,3} var b = []int {4,5,6} a = append(a,b...) 9.切片拷貝 s1 := []int{1,2,3,4,5} s2 := make([]int,10) copy(s2,s1) // copy不會擴容,append會。 s3 := []int{1,2,3} s3 = append(s3,s2...) s3 = append(s3,4,5,6) 10.字元串改字元 s := "hello world" s1 := []rune(s) //[]byte(s) s1[0] = '0' str := string(s1) 排序 1.sort.Ints()對證書進行排序 2.sort.String對字元和竄進行排序 3.sort.Float64s對浮點型進行排序 4.sort.SearchInte(a []int,b int)從數組a中查找b。前提是a有序 5.sort.SearchFloats(a []float64,b float64)從數組a中查找b。前提是a有序 7.sort.SearchStrings(a []string,b string)從數組a中查找b。前提是a有序 map 1.key-value的數據結構,又叫字典或關聯數組 a.聲明 var map1 map[keytype]valuetype var a map[string]string var a map[string]int var a map[int]string var a map[string]map[string]string //聲明不會分配記憶體,初始化需要make 鎖 1.互斥鎖 sync.Mutex var lock sync.Mutex func test() { var a map[int]int a = make(map[int]int) a[7] = 10 a[5] = 10 a[3] = 10 a[1] = 10 for i :=0;i<3;i++{ go func(b map[int]int){ lock.Lock() b[8] = rand.Intn(100) lock.Unlock() }(a) lock.Lock() fmt.Println(a) lock.Unlock() time.sleep(time.Second) } } 2.讀寫鎖 var mu sync.RWMutex go build -race 目錄 檢測代碼是否有衝突