go中的map结构类似于python中的dict。go中map的value和key在声明的时候需要指定类型。

map的定义

map有多种定义方法如下:

程序示例:

package main

import "fmt"

func main() {
	// 定义方法1:
	m1 := map[string] string{
		"a":"A",
	}
	fmt.Println(m1)

	//定义方法2:make
	m2 := make(map[string] string)
	m2["b"] = "B"
	fmt.Println(m2)

	//定义方法3:定义空map
	m3 := map[string] string{}
	fmt.Println(m3)

	// map中的key不是所有类型都支持,例如支持数组不支持切片,该类型需要支持==或!=操作
	a := [3] int{1, 2, 3}
	b := [3] int{1, 2, 3}
	if a==b{	// 此操作数组必须长度相等
		fmt.Println("a等于b!")
	}
}

运行结果:

map[b:B]
map[]
a等于b!

map的操作

增删改查操作

程序示例:

package main

import "fmt"

func main() {
	// 增加操作
	m1 := make(map[string] int)
	m1["a"] = 1
	m1["b"] = 2
	fmt.Println(m1)		//map[a:1 b:2]
	fmt.Printf("%v\n", m1)	//map[a:1 b:2]

	// 修改
	m1["a"] = 99
	fmt.Println(m1)

	// 查询:注意当查询一个map中没有的key的value时,value和类型有关
	fmt.Println(m1["d"])	// 0
	m2 := make(map[string] string)
	fmt.Println(m2["gogo"])	// 此处会显示空字符串
	fmt.Println("**************************")

	// 删除 当删除一个不存在的值的时候也不会报异常
	delete(m1, "a")
	fmt.Println(m1)

}

运行结果:

        

map[a:1 b:2]
map[a:1 b:2]
map[a:99 b:2]
0
            // 注意此处为空
**************************
map[b:2]

map的遍历

map的遍历比较简单,类似python

程序:

package main

import "fmt"

func main() {

	m1 := make(map[string] int)
	m1["a"] = 1
	m1["b"] = 2
	fmt.Println(m1)		//map[a:1 b:2]


	// 遍历
	for k, v := range m1 {
		fmt.Println(k, v)
	}

}

运行结果:

map[a:1 b:2]
a 1
b 2

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐