go定义元素为Map类型的切片,定义一个切片类型的map
package main import ( "fmt" "strconv" ) func main() { // 1.定义元素为Map类型的切片,即元素值为map // 方式一: s := make([]map[string]string, 3) s[0] = make(map[string]string) s[0]["name"] = "小明" s[0]["address"] = "山东" s[1] = make(map[string]string) s[1]["name"] = "小红" s[1]["address"] = "北京" s[2] = map[string]string{ "name": "小强", "address": "上海", } fmt.Println(s) // [map[address:山东 name:小明] map[address:北京 name:小红] map[address:上海 name: 小强]] // 方式二: s2 := []map[string]string{ { "name": "小明", "address": "山东", }, { "name": "小红", "address": "北京", }, } fmt.Println(s2) // [map[address:山东 name:小明] map[address:北京 name:小红]] // 2.定义一个切片类型的map,即元素值是切片 m := make(map[string][]int) ss1 := []int{1, 2} ss2 := []int{3, 4} m["key1"] = ss1 m["key2"] = ss2 fmt.Println(m) // map[key1:[1 2] key2:[3 4]] m2 := map[string][]int{ "key1": {1, 2}, "key2": {3, 4, 5}, } fmt.Println(m2) // map[key1:[1 2] key2:[3 4 5]] //3.定义 [Map [切片 [Map]]] 类型 var list map[string][]map[string]string list = make(map[string][]map[string]string, 0) //必须初始化 for i := 1; i < 3; i++ { var class []map[string]string class = make([]map[string]string, 0) for j := 1; j < 4; j++ { id := strconv.Itoa(i) + "_" + strconv.Itoa(j) student := map[string]string{ "id": id, "name": "学生" + id, } class = append(class, student) } list["班级"+strconv.Itoa(i)] = class } fmt.Println(list) //map[班级1:[map[id:1_1 name:学生1_1] map[id:1_2 name:学生1_2] map[id:1_3 name:学生1_3]] 班级2:[map[id:2_1 name:学生2_1] map[id:2_2 name:学生2_2] map[id:2_3 name:学生2_3]]] //4.定义 [切片 [切片 [Map]]] 类型 var list2 [][]map[string]string list2 = make([][]map[string]string, 0) //必须初始化 for i := 1; i < 3; i++ { var class []map[string]string class = make([]map[string]string, 0) for j := 1; j < 4; j++ { id := strconv.Itoa(i) + "_" + strconv.Itoa(j) student := map[string]string{ "id": id, "name": "学生" + id, } class = append(class, student) } list2 = append(list2, class) } fmt.Println(list2) //[[map[id:1_1 name:学生1_1] map[id:1_2 name:学生1_2] map[id:1_3 name:学生1_3]] [map[id:2_1 name:学生2_1] map[id:2_2 name:学生2_2] map[id:2_3 name:学生2_3]]] //5.定义 [切片 [切片]] 类型 list3 := make([][]int, 0) //必须初始化 for i := 1; i < 3; i++ { var class []int class = make([]int, 0) for j := 1; j < 4; j++ { class = append(class, j) } list3 = append(list3, class) } fmt.Println(list3) //[[1 2 3] [1 2 3]] //6.定义 [map [map]] 类型 list4 := make(map[string]map[string]string, 0) //必须初始化 for i := 1; i < 3; i++ { student := map[string]string{ "id": strconv.Itoa(i), "name": "学生" + strconv.Itoa(i), } list4["班级"+strconv.Itoa(i)] = student } fmt.Println(list4) //map[班级1:map[id:1 name:学生1] 班级2:map[id:2 name:学生2]] }