05-map

@

1. 声明 map

  • 语法
var MapName map[keyType]valueType
  • 语法示例
var warlords map[string]string
  • 仅声明的map为空
package main
import "fmt"
func main() {
var warlords map[string]string
if warlords == nil {
fmt.Printf("map为空")
}else{
fmt.Printf("map为:%+v",warlords)
}
}

结果

map为空

2. 初始化 map

  • 语法
MapName := make(map[keyType]valueType)
  • 语法示例
warlords := make(map[string]string)
  • 初始化之后,map不为空
package main
import "fmt"
func main() {
warlords := make(map[string]string)
if warlords == nil {
fmt.Printf("map为空")
}else{
fmt.Printf("map为:%+v",warlords)
}
}
  • 结果显示
map为:map[]

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 分别定义每一组键值对

  • 语法
MapName[key1] = value1
  • 语法示例
warlords["孙权"] = "江东"
  • 完整示例
package main
import "fmt"
func main() {
//warlords := make(map[string]string)
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() {
//定义map
var warlords = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
//查询刘备的信息
SearchTerritory("刘备",warlords)
//查询曹操的信息
SearchTerritory("曹操",warlords)
}
// SearchTerritory 定义一个查询函数
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())

  • 语法
delete(MapNam, key)
  • 语法示例
  • 4.2 示例
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[刘备:徐州 袁绍:河北 马腾:西凉]

posted on   运维开发玄德公  阅读(11)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示