golang学习08

九、map映射

  1. 导语

  • 是go语言中内置的一种类型,与键值对相关联。

  • key,value的类型:bool、数字、指针、string、channel、还可以是只包含前几个类型的接口、数组、结构体

  • key通常为int、string类型,value通常为int、float、string、map、结构体类型

  • 对key来说,slice、结构体、map不可以

  1. map代码

  • map在使用前一定要make

  • map的key-value是无序的

  • key不可以重复,如果重复,后面的value会替换前一个value

  • value是可以重复的

  • make函数第二个参数size可以省略,默认分配一个内存

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[202222000541] = "qx"
    a[202222000542] = "ls"
    fmt.Println(a)
    fmt.Println("---------------")
    //方式2:
    b := make(map[int]string)
    b[202222000541] = "qx"
    b[202222000542] = "ld"
    fmt.Println(b)
    fmt.Println("-----------------")
    //方式3:
    c := map[int]string{
        202222000541: "qx",
        202222000542: "sf",
    }
    fmt.Println(c)
}

输出:

  1. map增删改查

package main

import "fmt"

func main() {
    //定义map
    a := make(map[int]string, 2)
    //增加
    a[202222000541] = "qx"
    a[202222000542] = "ss"
    fmt.Println(a)
    fmt.Println("------------")
    //修改
    a[202222000541] = "gj"
    fmt.Println(a)
    fmt.Println("-------------")
    //删除
    delete(a, 202222000541)
    fmt.Println(a)
    fmt.Println("-----------------")
    //清空
    //1.循环遍历删除
    //2.make一个新空间,使老空间被回收
    b := make(map[int]int)
    b[202222000541] = 22
    b[202222000542] = 23
    fmt.Println(b)
    //查找,若查找的键不在map中,也不会报错,只会返回false
    value, bool := b[202222000541]
    fmt.Println(value)
    fmt.Println(bool)
    v, f := b[20222200076]
    fmt.Println(v)
    fmt.Println(f)
}

输出:

  1. map长度

使用len函数,如fmt.Println(len(a))

  1. map遍历:只有for-range遍历

import "fmt"

func main() {
    a := make(map[int]string)
    a[202222000541] = "覃系"
    a[202222000542] = "是偶"
    a[202222000543] = "好滴"
    a[202222000544] = "萨伏"
    fmt.Println(a)
    fmt.Println("----------------")
    //遍历
    for k, v := range a {
        fmt.Printf("学号为:%v  姓名为:%v\n", k, v)
    }
}

输出:

加深难度:

package main

import (
    "fmt"
)

func main() {
    a := make(map[string]map[int]string)//map里面由map
    a["班级1"] = make(map[int]string)
    a["班级1"][202222000541] = "覃系"
    a["班级1"][202222000542] = "亲生的"
    a["班级2"] = make(map[int]string)
    a["班级2"][202222000543] = "阿富汗"
    a["班级2"][202222000545] = "是客服"
    fmt.Println(a)
    fmt.Println("----------------")
    //遍历
    for k, v := range a {
        fmt.Println(k)
        for k1, v1 := range v {
            fmt.Printf("学号:%v 姓名:%v\n", k1, v1)
        }
        fmt.Println()
    }

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值