golang中map的crud操作

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
 
import "fmt"
 
//map的增删改查
func main() {
 
    school := make(map[string]string, 10)
 
    school["no1"] = "清华大学"
    //如果没有key,则为增添,如果key已经存在,则为修改
    school["no1"] = "北京大学"   //修改
    school["no2"] = "清华大学"   //增添
    school["no5"] = "复旦大学"   //增添
    school["no6"] = "上海交通大学" //增添
 
    //map查找
    val, catch := school["no2"]
    if catch {
        fmt.Printf("有no2 key值为%v\n", val)
    } else {
        fmt.Println("没有no2")
    }
    //map删除,delete(map,"key"),delete是一个内置函数,如果key存在,就删除该key,如果key不存在,不操作,但是也不会报错
 
    school["no3"] = "野鸡大学" //新添
    fmt.Println(school)
    delete(school, "no3") //删除key为no3的内容
    delete(school, "no4") //delete指定的key不存在,不会执行删除操作,但是也没有报错
    fmt.Println(school)
    /*
        如果要删除map所有的key,没有一个专门的方法一次性删除
        1.但是可以遍历key逐个删除
        2.或者map = make(),make一个新的空间,让原来的成为垃圾,被gc回收
    */
    //1.遍历所有的key
    for key, value := range school {
        fmt.Printf("key=%v value=%v\n", key, value)
    }
    //2.直接make一个新的空间
    school = make(map[string]string)
    fmt.Println(school)
 
    //对较为复杂的map进行for-range遍历
    id := make(map[string]map[string]string)
    id["no1"] = make(map[string]string, 3)
    id["no1"]["name"] = "派克"
    id["no1"]["sex"] = "男"
    id["no1"]["address"] = "比尔吉沃特"
 
    id["no2"] = make(map[string]string, 3)
    id["no2"]["name"] = "佐伊"
    id["no2"]["sex"] = "女"
    id["no2"]["address"] = "巨神峰"
 
    id["no3"] = make(map[string]string, 3)
    id["no3"]["name"] = "锤石"
    id["no3"]["sex"] = "男"
    id["no3"]["address"] = "暗影岛"
 
    for key1, value1 := range id {
        fmt.Println("key1=", key1)
        for key2, value2 := range value1 {
            fmt.Printf("\t key2=%v value2=%v\n", key2, value2)
        }
        fmt.Println()
    }
 
    fmt.Println("id 有", len(id), "对 key")
}

  


__EOF__

本文作者StarGazer
本文链接https://www.cnblogs.com/PatrickStarGazer/p/15959049.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Star_Gazer  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示