一、map

map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。

Go语言中 map的定义语法是这样的:

map[KeyType]ValueType

其中,

  • KeyType:表示键的类型。
  • ValueType:表示键对应的值的类型。

二、map 实战

package main

import (
	"encoding/json"
	"fmt"
)

/**
Map 集合
 */
func main() {

	var m1 map[int]string

	m1 = make(map[int]string)

	m1[1] = "tom"
	fmt.Println("m1 =", m1)

	m1[2] = "lisi"

	fmt.Println("m1 = ", m1)

	var m2 map[int]string = map[int]string{}
	m2[1] = "tory"

	fmt.Println("m2=", m2)

	var m3 map[int]string = make(map[int]string)

	m3[2] = "marry"

	fmt.Println("m3=", m3)

	m4 := map[int]string{}

	m4[3] = "tom"

	fmt.Println("m4=", m4)

	m5 := make(map[int]string)

	m5[4] = "feifei"

	fmt.Println("m5=", m5)

	m6 := map[int]string{1: "tom", 2: "lisi"}

	fmt.Println("m6=", m6)

	// 生产json

	res := make(map[string]interface{})

	res["code"] = 200
	res["msg"] = "成功"
	res["data"] = map[string]interface {
	}{
		"name": "李明",
		"age":  "19",
		"body": []string{"学习go", "学习java"},
	}

	fmt.Println("res data = ", res)


	// 序列化

	jsons, errs :=json.Marshal(res)

	if errs !=nil{
		fmt.Println("error",errs)
	}
	fmt.Println("json序列化后 = ",string(jsons))

	// 反序列化

	res2 :=make(map[string]interface{})

	errs = json.Unmarshal([]byte (jsons),&res2)

	if errs !=nil{
		fmt.Println("error",errs)
	}

	fmt.Println("json反序列化后 ",res2)



	// 编辑和删除

	person :=map[int]string{
		1:"zhangsan",
		2:"lisi",
		3:"wangwu",
		4:"liming",
	}

	fmt.Println("person = ",person)

	delete(person,2)

	fmt.Println("person 删除后",person)

	person[3] ="钟渊1"
	person[4] ="钟渊2"

	fmt.Println("p=",person)


}