GO语言基础教程9——map

简介: map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。

GO语言基础教程9——map


GO语言基础教程9——map


map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。


map定义

map[KeyType]ValueType

例如:

map[int]string

使用make()来定义map

make(map[KeyType]ValueType, [cap])

其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。


map的基本使用


map中的数据都是成对出现的,map的基本使用示例代码如下:

func main() {
  scoreMap := make(map[string]int, 8)
  scoreMap["张三"] = 90
  scoreMap["小明"] = 100
  fmt.Println(scoreMap) //map[小明:100,张三:90]
  fmt.Println(scoreMap["小明"]) //100
  fmt.Printf("type of a:%T\n", scoreMap) //type of a:mpa[string]int   
}

map也支持在声明的时候填充元素.


例如:

func main() {
  user := map[string]string{
    "username": "admin",
    "password": "123456",
  }
  fmt.Println(user) //map[username:admin,password:123456]
}


判断某个键是否存在


Go语言中有个判断map中键是否存在的特殊写法,格式如下:

value, ok := map[key] //ok为true则存在,否则不存在,value为键对应的值

举个例子:

func main() {
    a := map[int]string{
        1:"likuis",
        2:"tom",
    }
    value,ok :=map[1]
    if ok {
        fmt.printf("1:%s",value)
    } else {
        fmt.println("没有这个人")
    }
}


map的遍历


Go语言中使用for range遍历map。

func main() {
    a := map[int]string{
        1:"likuis",
        2:"tom",
    }
    for k,v := range a {
        fmt.println(k, v)
    }
}

注意: 遍历map时的元素顺序与添加键值对的顺序无关.


使用delete()函数删除键值对

func main() {
    a := map[int]string{
        1:"likuis",
        2:"tom",
    }
    fmt.println(a) //map[1:likuis,2:tom]
    delete(a,2) //将2:tom从map中删除
    fmt.println(a) //map[1:likuis]
}


课后练习


1、写一个程序,统计一个字符串中每个单词出现的次数,例如:"what where how what"中what=2 where=1 how=1

相关文章
|
5天前
|
Go
go语言map、实现set
go语言map、实现set
12 0
|
5天前
|
Go
go语言数组与切片
go语言数组与切片
14 0
|
1天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
12 2
在go语言中调试程序
|
4天前
|
Devops Go 云计算
Go语言发展现状:历史、应用、优势与挑战
Go语言发展现状:历史、应用、优势与挑战
|
5天前
|
Go
go语言的hello,world
go语言的hello,world
10 1
|
3天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
4天前
|
编译器 Go 开发者
|
5天前
|
Go
go切片和map比较
go切片和map比较
9 0
|
8天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。
|
7天前
|
存储 中间件 Go
在go语言服务中封装路由和示例
【6月更文挑战第23天】本文介绍golang后端按协议处理、中间件(一次性与每次请求执行)划分、以及服务架构Controller、Logic/Service、DAO/Repository和Routers划分。代码仓库在GitHub上提供。使用框架简化了交互和处理。后续章节深入探讨服务构建。
105 5
在go语言服务中封装路由和示例