• 01-go基础-07-map(声明map、初始化map、map赋值、遍历map、判断key是否在map中、删除map成员)


    1. 声明 map

    • 语法
    var MapName map[keyType]valueType
    
    • 1
    • 语法示例
    var warlords map[string]string
    
    • 1
    • 仅声明的map为空
    package main
    
    import "fmt"
    
    func main() {
    	var warlords  map[string]string
    	if warlords == nil {
    		fmt.Printf("map为空")
    	}else{
    		fmt.Printf("map为:%+v",warlords)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    结果

    map为空
    
    • 1

    2. 初始化 map

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

    3. map赋值

    3.1 直接声明并赋值

    在函数内可以直接声明并赋值

    • 语法
    mapName := map[string]string{key1:value1,key2:value2……}
    
    • 1
    • 语法示例
    var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
    
    • 1
    • 完整示例
    package main
    
    import "fmt"
    
    func main() {
    	var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
    	if warlords == nil {
    		fmt.Printf("map为空")
    	}else{
    		fmt.Printf("map为:%+v",warlords)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    结果

    map为:map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]
    
    • 1

    说明:
    如上可见,map是没有顺序的,打印出的结果和我们赋值的顺序并不一致。

    3.2 分别定义每一组键值对

    • 语法
    MapName[key1] = value1
    
    • 1
    • 语法示例
    	warlords["孙权"] = "江东"
    
    • 1
    • 完整示例
    package main
    import "fmt"
    
    func main() {
    	//warlords := make(map[string]string)
    	var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
    	warlords["孙权"] = "江东"
    	fmt.Printf("map为:%+v",warlords)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    语法

    map为:map[刘备:徐州 刘表:荆州 孙权:江东 袁绍:河北 马腾:西凉]
    
    • 1

    4. 遍历map

    • 语法
    for key,value := range MapName {
    	……
    	}
    
    • 1
    • 2
    • 3
    • 完整示例
    package main
    
    import "fmt"
    
    func main() {
    	var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
    	for name,territory := range warlords {
    		fmt.Println(name,":",territory)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    结果

    刘备 : 徐州
    袁绍 : 河北
    马腾 : 西凉
    刘表 : 荆州
    
    • 1
    • 2
    • 3
    • 4

    5. 判断key是否在map中

    • 语法
    if value,ok := MapName[key];ok{
        ……
    }
    
    • 1
    • 2
    • 3
    • 完整示例
    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)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    结果

    ===========================
    "刘备" 的信息已查到
    势力范围:"徐州"
    ===========================
    未查到 "曹操" 的信息
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6. 删除成员(delete())

    • 语法
    delete(MapNam, key)
    
    • 1
    • 语法示例
    
    
    • 1
    • 4.2 示例
    package main
    
    import "fmt"
    
    func main() {
    
    	var warlords  = map[string]string{"刘备":"徐州","袁绍":"河北","马腾":"西凉","刘表":"荆州"}
    	fmt.Println("原map:",warlords)
    
    	delete(warlords,"刘表")
    	fmt.Println("现map:",warlords)
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    结果

    原map: map[刘备:徐州 刘表:荆州 袁绍:河北 马腾:西凉]
    现map: map[刘备:徐州 袁绍:河北 马腾:西凉]
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    【UFS HCI】第2篇:UFS HCI register详解
    JAVA财务管理系统的设计与实现计算机毕业设计Mybatis+系统+数据库+调试部署
    腾讯云轻量应用服务器ubuntu使用xshell安装宝塔面板
    MyBatis-Plus动态表名插件使用
    每日一记 关于Python的准备知识、快速上手
    【Pytorch笔记】5.DataLoader、Dataset、自定义Dataset
    python 字典dict和列表list的读取速度问题, range合并
    甘露糖修饰阿奇霉素|mannose-Azithromycin|甘露糖-聚乙二醇-阿奇霉素
    什么是NoSQL及NoSQL四大分类
    L78.linux命令每日一练 -- 第11章 Linux系统管理命令 -- iostat和iotop
  • 原文地址:https://blog.csdn.net/xingzuo_1840/article/details/128153009