• 技术文章 >后端开发 >Golang

    golang map怎么修改

    青灯夜游青灯夜游2022-12-26 17:51:59原创843

    修改方法:1、使用“map[“key”]= value”语句增加或更新元素,如果“key”是存在的则更新元素,如果“key”是不存在的则增加元素;2、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;3、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    Go语言中 map 是一种特殊的数据结构,一种元素对(pair)的无序集合,pair 对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找到对应的 value。

    map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和 HashTable 等。

    map的引入

    【1】映射(map), Go语言中内置的一种类型,它将键值对相关联,我们可以通过键 key来获取对应的值 value。 类似其它语言的集合
    1.png

    【2】基本语法

    var map变量名 map[keytype]valuetype

    PS:key、value的类型:bool、数字、string、指针、channel 、还可以是只包含前面几个类型的接口、结构体、数组
    PS:key通常为int 、string类型,value通常为数字(整数、浮点数)、string、map、结构体
    PS:key:slice、map、function不可以

    【3】代码:

    map的特点:

    (1)map集合在使用前一定要make
    (2)map的key-value是无序的
    (3)key是不可以重复的,如果遇到重复,后一个value会替换前一个value
    (4)value可以重复的

    package main
    import "fmt"
    func main(){
            //定义map变量:
            var a map[int]string
            //只声明map内存是没有分配空间
            //必须通过make函数进行初始化,才会分配空间:
            a = make(map[int]string,10) //map可以存放10个键值对
            //将键值对存入map中:
            a[20095452] = "张三"
            a[20095387] = "李四"
            a[20097291] = "王五"
            a[20095387] = "朱六"
            a[20096699] = "张三"
            //输出集合
            fmt.Println(a)
    }

    map的三种创建方式

     package main
    import "fmt"
    func main(){
            //方式1:
            //定义map变量:
            var a map[int]string
            //只声明map内存是没有分配空间
            //必须通过make函数进行初始化,才会分配空间:
            a = make(map[int]string,10) //map可以存放10个键值对
            //将键值对存入map中:
            a[20095452] = "张三"
            a[20095387] = "李四"
            //输出集合
            fmt.Println(a)
            //方式2:
            b := make(map[int]string)
            b[20095452] = "张三"
            b[20095387] = "李四"
            fmt.Println(b)
            //方式3:
            c := map[int]string{
                    20095452 : "张三",
                    20098765 : "李四",
            }
            c[20095387] = "王五"
            fmt.Println(c)
    }

    map的增删改查

    【1】增加和更新操作:

    map[“key”]= value ——》 如果key还没有,就是增加,如果key存在就是修改。

    【2】删除操作:

    delete(map,“key”) , delete是一个内置函数,如果key存在,就删除该key-value,如果k的y不存在,不操作,但是也不会报错

    2.png

    【3】清空操作:

    (1)如果我们要删除map的所有key ,没有一个专门的方法一次删除,可以遍历一下key,逐个删除

    (2)或者map = make(…),make一个新的,让原来的成为垃圾,被gc回收

    【4】查找操作:

    value ,bool = map[key]

    value为返回的value,bool为是否返回 ,要么true 要么false

    package main
    import "fmt"
    func main(){
            //定义map
            b := make(map[int]string)
            //增加:
            b[20095452] = "张三"
            b[20095387] = "李四"
            //修改:
            b[20095452] = "王五"
            //删除:
            delete(b,20095387)
            delete(b,20089546)
            fmt.Println(b)
            //查找:
            value,flag := b[200]
            fmt.Println(value)
            fmt.Println(flag)
    }

    【5】获取长度:len函数

    【6】遍历:for-range

    package main
    import "fmt"
    func main(){
            //定义map
            b := make(map[int]string)
            //增加:
            b[20095452] = "张三"
            b[20095387] = "李四"
            b[20098833] = "王五"
            //获取长度:
            fmt.Println(len(b))
            //遍历:
            for k,v := range b {
                    fmt.Printf("key为:%v value为%v \t",k,v)
            }
            fmt.Println("---------------------------")
            //加深难度:
            a := make(map[string]map[int]string)
            //赋值:
            a["班级1"] = make(map[int]string,3)
            a["班级1"][20096677] = "露露"
            a["班级1"][20098833] = "丽丽"
            a["班级1"][20097722] = "菲菲"
            a["班级2"] = make(map[int]string,3)
            a["班级2"][20089911] = "小明"
            a["班级2"][20085533] = "小龙"
            a["班级2"][20087244] = "小飞"
            for k1,v1:= range a {
                    fmt.Println(k1)
                    for k2,v2:= range v1{
                            fmt.Printf("学生学号为:%v 学生姓名为%v \t",k2,v2)
                    }
                    fmt.Println()
            }
    }

    【相关推荐:Go视频教程编程教学

    以上就是golang map怎么修改的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:go语言 Golang
    上一篇:go语言同步机制有哪些 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • go语言支不支持方法重载• go语言中切片和数组是什么• go语言有什么缺点吗• go语言中sql是什么• go语言图标是什么动物• php和go语言的区别是什么
    1/1

    PHP中文网