GO语言基础-04-数据类型-05-map(声明map、初始化map、map赋值、遍历map、判断key是否在map中、删除map成员)
@
1. 声明 map
| var MapName map[keyType]valueType |
| var warlords map[string]string |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var warlords map[string]string |
| if warlords == nil { |
| fmt.Printf("map为空") |
| }else{ |
| fmt.Printf("map为:%+v",warlords) |
| } |
| } |
结果
2. 初始化 map
| MapName := make(map[keyType]valueType) |
| warlords := make(map[string]string) |
| package main |
| import "fmt" |
| |
| func main() { |
| warlords := make(map[string]string) |
| if warlords == nil { |
| fmt.Printf("map为空") |
| }else{ |
| fmt.Printf("map为:%+v",warlords) |
| } |
| } |
3. map赋值
3.1 直接声明并赋值
在函数内可以直接声明并赋值
| mapName := map[string]string{key1:value1,key2:value2……} |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| if warlords == nil { |
| fmt.Printf("map为空") |
| }else{ |
| fmt.Printf("map为:%+v",warlords) |
| } |
| } |
结果
| map为:map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉] |
说明:
如上可见,map是没有顺序的,打印出的结果和我们赋值的顺序并不一致。
3.2 分别定义每一组键值对
| package main |
| import "fmt" |
| |
| func main() { |
| |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| warlords["孙权"] = "江东" |
| fmt.Printf("map为:%+v",warlords) |
| } |
语法
| map为:map[刘备:徐州 刘表:荆州 孙权:江东 袁绍:河北 马腾:西凉] |
4. 遍历map
| for key,value := range MapName { |
| …… |
| } |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| for name,territory := range warlords { |
| fmt.Println(name,":",territory) |
| } |
| } |
结果
| 刘备 : 徐州 |
| 袁绍 : 河北 |
| 马腾 : 西凉 |
| 刘表 : 荆州 |
5. 判断key是否在map中
| if value,ok := MapName[key];ok{ |
| …… |
| } |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| |
| SearchTerritory("刘备",warlords) |
| |
| SearchTerritory("曹操",warlords) |
| } |
| |
| |
| func SearchTerritory(name string,warlords map[string]string)(){ |
| if territory,ok := warlords[name];ok { |
| fmt.Printf("===========================\n%q 的信息已查到\n势力范围:%q\n",name,territory) |
| }else{ |
| fmt.Printf("===========================\n未查到 %q 的信息",name) |
| } |
| } |
结果
| =========================== |
| "刘备" 的信息已查到 |
| 势力范围:"徐州" |
| =========================== |
| 未查到 "曹操" 的信息 |
6. 删除成员(delete())
| package main |
| |
| import "fmt" |
| |
| func main() { |
| |
| var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"} |
| fmt.Println("原map:",warlords) |
| |
| delete(warlords,"刘表") |
| fmt.Println("现map:",warlords) |
| |
| } |
结果
| 原map: map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉] |
| 现map: map[刘备:徐州 袁绍:河北 马腾:西凉] |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具