美文网首页
GO基础5-map

GO基础5-map

作者: 一直吃不饱 | 来源:发表于2020-12-06 17:51 被阅读0次

map是引用类型

创建、初始化

//1、make创建map类型的数据
var userinfo1 = make(map[string]string) // make(map[string]string 20) 指定长度
userinfo1["username"] = "张三"
userinfo1["age"] = "20"
userinfo1["sex"] = "男"
fmt.Println(userinfo1) // map[age:20 sex:男 username:张三]
fmt.Println(userinfo1["username"]) // 张三

//2、声明时填充元素
var userinfo2 = map[string]string{
    "username": "张三",
    "age":      "20",
    "sex":      "男",
}
fmt.Println(userinfo2) // map[age:20 sex:男 username:张三]

//3、类型推导方式
userinfo3 := map[string]string{
    "username": "张三",
    "age":      "20",
    "sex":      "男",
}
fmt.Println(userinfo3)

for range 循环遍历map类型数据

for k, v := range userinfo3 {
    fmt.Printf("key:%v value:%v\n", k, v)
}
/*
key:username value:张三
key:age value:20
key:sex value:男
*/

map类型的CURD

//查找
v, ok := userinfo3["age"]
fmt.Println(v, ok) // 20 true
//删除
delete(userinfo3, "sex")
fmt.Println(userinfo3) // map[age:20 username:张三]
//增加
userinfo3["height"] = "180cm"

定义一个map类型的切片

var userinfo = make([]map[string]string, 3, 3) // 长度 容量
    
fmt.Println(userinfo[0] == nil) // true
    
if userinfo[0] == nil {
    userinfo[0] = make(map[string]string)
    userinfo[0]["username"] = "张三"
    userinfo[0]["age"] = "男"
}
if userinfo[1] == nil {
    userinfo[1] = make(map[string]string)
    userinfo[1]["username"] = "李四"
    userinfo[1]["age"] = "男"
}
    
fmt.Println(userinfo) // [map[age:男 username:张三] map[age:男 username:李四] map[]]

//拿到里面的元素
for _, v := range userinfo {
    //fmt.Println(v)
    for k2, v2 := range v {
        fmt.Println(k2, v2)
    }
}
/*
username 张三
age 男
username 李四
age 男
*/

如果想在map对象中存放一系列属性,可以将map类型的值定义成切片

var userinfo = make(map[string][]string)
userinfo["hobby"] = []string{
    "吃饭",
    "睡觉",
}
userinfo["word"] = []string{
    "java",
    "C++",
}
fmt.Println(userinfo) // map[hobby:[吃饭 睡觉] word:[java C++]]

map的排序

map1 := make(map[int]int, 10)
map1[1] = 50
map1[8] = 1
map1[3] = 56
map1[7] = 77
map1[2] = 78
map1[1] = 1
//无序
for key, val := range map1 {
    fmt.Println(key, val) 
}
//按照key升序输出
//1.把map的key放在切片里面
var keySlice []int
for key, _ := range map1 {
    keySlice = append(keySlice, key)
}
fmt.Println(keySlice) //[7 2 1 3 8]
//2.让key进行升序排序
sort.Ints(keySlice) //[1 2 3 7 8]
fmt.Println(keySlice)
//3.循环遍历key输出map的值
for _, v := range keySlice {
    fmt.Printf("key=%v  value=%v\n", v, map1[v])
}
/*
8 1
3 56
1 1
7 77
2 78
[7 2 1 3 8]
[1 2 3 7 8]
key=1  value=1
key=2  value=78
key=3  value=56
key=7  value=77
key=8  value=1
*/

统计单词出现个数

var str = "how do you do"
var strSlice = strings.Split(str, " ")
fmt.Println(strSlice) // [how do you do]
    
var strMap = make(map[string]int)
for _, v := range strSlice {
    strMap[v]++
}
fmt.Println(strMap) // map[do:2 how:1 you:1]

相关文章

  • GO基础5-map

    map是引用类型 创建、初始化 for range 循环遍历map类型数据 map类型的CURD 定义一个map类...

  • go 基础学习

    1 go 基础go 语法基础go 官方资料如果由C ,C++ 基础, 学习go 比较容易,本文学习go ,主要是为...

  • go语言基础

    go语言基础 go 语言接口

  • Golang资料整理

    视频 郝林-Go语言第一课 Go编程基础 Go Web 基础 Go名库讲解 社区 官网要翻墙 Github--Go...

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

  • go http学习笔记

    go http学习笔记 @[goweb, go, http] 1.go http基础 go http服务器简例 h...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • 开发自己的区块链基础功能篇

    准备工作: 安装go开发环境 用go搭建web服务 go语言基础 安装go开发环境 到https://golang...

  • go语言学习

    基础 go的学习,感谢Go By Example、go网络编程与go语言标准库随着学习的深入,此文章持续更新......

  • docker 源码入门

    前言 docker是go语言编写的,要看docker源码,最起码要学会go的基础语法。 了解 docker 基础架...

网友评论

      本文标题:GO基础5-map

      本文链接:https://www.haomeiwen.com/subject/bvvowktx.html