var a [5]string
a[0] = "string"
a := [3]int{1, 2} // 未初始化元素值爲 0。 b := [...]int{1, 2, 3, 4} // 經過初始化值肯定數組長度。 c := [5]int{2: 100, 4:200} // 使⽤用索引號初始化元素。 d := [...]struct { name string age uint8 }{ {"user1", 10}, {"user2", 20}, }
//1 顯示聲明 var slice []map[string]string var slice []string //2 來自數組類型 a := [...]int{1, 2, 3, 4} var slice []type = a[start:end] //當相關數組尚未定義時,咱們可使用 make() 函數來建立一個切片 同時建立好相關數組 var slice []type = make([]type, len)
//1 slice[0]= 1 //2 append附加 slice = append(slice, "1")
data := [...]int{0, 1, 2, 3, 4, 5} s := data[2:4] s[0] = 100 s[1] = 200 //可直接建立 slice 對象,⾃自動分配底層數組 s1 := []int{0, 1, 2, 3, 8: 100} //經過初始化表達式構造,可以使⽤用索引號。 s2 := make([]int, 6, 8) // 使⽤用 make 建立,指定 len 和 cap 值。 s3 := make([]int, 6) // 省略 cap,至關於 cap = len。 s4 := []int{} //等於 make([]int, 0),須要用append增長:s4 = append(s4, 1)
屬性 len 表⽰示可⽤用元素數量,讀寫操做不能超過該限制
屬性 cap 表⽰示最⼤擴張容量,不能超出數組限制
在大批量添加數據時,建議⼀次性分配足夠大的空間,以減小內存分配和數據複製開銷
使用append能夠作到無容量限制數組
//一個沒有容量限制的slice a := []int{} //等同 make([]string, 0) //而後能夠無限append a = append(a, 1) a = append(a, 2) a = append(a, ...)
var m map[string]string
//1 m = map[string]string{"one": "1", "two": "2"} //2 m = make(map[string]string) m["one"] = "1"
//1 m := map[string]string{"one": "1", "two": "2"} //2 m := map[string]string{} m["one"] = "1"
//1 顯示聲明 type Node struct { _ int id int data *byte next *Node } var n Node //2 匿名struct,可用做結構成員或定義變量 //結構成員中使用匿名 type File struct { name string attr struct { perm int owner int } } //定義變量使用匿名 var n struct { perm int owner int }
type User struct { name string age int } var u1 User func main() { u1.name = "Tom" }
//當type是顯式聲明的狀況下====================== type User struct { name string age int } //變量聲明+賦值 //1 成員名稱+值 u1 := User { name: "Tom" age: 20 } //2 已經定義變量的狀況下 var u1 User #2.1 u1.name = "Tom" #2.2 u1 = User { "Tom", "20" } //2.3 u1 = User { name: "Tom", age: "20" } //3 未定義變量的狀況下和第2種同樣寫法,不一樣的是用 := u1 := User { "Tom", "20" } //4 //當變量採用匿名聲明狀況下====================== var attr = struct { perm int owner int }{2, 0755}