1.2 概述
Map 集合是无序的 key-value 数据结构。
Map 集合中的 key / value 可以是任意类型,但所有的 key 必须属于同一数据类型,所有的 value 必须属于同一数据类型,key 和 value 的数据类型可以不相同。
1.2 声明 Map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package main
import ( "fmt" )
func main() { var p1 map[int]string p1 = make(map[int]string) p1[1] = "Tom" fmt.Println("p1 :", p1)
var p2 map[int]string = map[int]string{} p2[1] = "Tom" fmt.Println("p2 :", p2)
var p3 map[int]string = make(map[int]string) p3[1] = "Tom" fmt.Println("p3 :", p3)
p4 := map[int]string{} p4[1] = "Tom" fmt.Println("p4 :", p4)
p5 := make(map[int]string) p5[1] = "Tom" fmt.Println("p5 :", p5) p6 := map[int]string{ 1 : "Tom", } fmt.Println("p6 :", p6) }
|
运行结果:
1.3 生成 JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package main
import ( "encoding/json" "fmt" )
func main() { res := make(map[string]interface{}) res["code"] = 200 res["msg"] = "success" res["data"] = map[string]interface{}{ "username" : "Tom", "age" : "30", "hobby" : []string{"读书","爬山"}, } fmt.Println("map data :", res)
jsons, errs := json.Marshal(res) if errs != nil { fmt.Println("json marshal error:", errs) } fmt.Println("") fmt.Println("--- map to json ---") fmt.Println("json data :", string(jsons))
res2 := make(map[string]interface{}) errs = json.Unmarshal([]byte(jsons), &res2) if errs != nil { fmt.Println("json marshal error:", errs) } fmt.Println("") fmt.Println("--- json to map ---") fmt.Println("map data :", res2) }
|
运行结果:
1.4 编辑和删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| package main
import ( "fmt" )
func main() { person := map[int]string{ 1 : "Tom", 2 : "Aaron", 3 : "John", } fmt.Println("data :",person)
delete(person, 2) fmt.Println("data :",person)
person[2] = "Jack" person[3] = "Kevin" fmt.Println("data :",person) }
|
运行结果: