首页 > 编程学习 > 慢聊Go之Go中的Map|Go主题月

慢聊Go之Go中的Map|Go主题月

发布时间:2022/5/14 18:57:28

慢聊Go之Go中的Map|Go主题月

image.png

"进阶架构师" 微信公众号,欢迎大家订阅、阅读、评论、点赞!!!!

前言

如果说在学习Java时,最重要的一种数据结构是什么?个人觉得必然会是集合。集合在Java中举足轻重。那么,我们已经熟知了Java中的Map结构,嘿嘿,其实在Go的世界里,仍然存在Map这个数据结构。

今天,我们就来好好学学,了解下呀!

什么是Map

Map是最有用的数据结构之一。它可以存储在键值对中,并且不允许重复的键。

映射是键值对存储容器。提供了快速有效的查找,并且呢,不允许重复的键,而可以有重复的值。

GoLang中声明Map结构

现在,我们来学下Go中如何声明一个Map结构

package main
 
import (
    "fmt"
)
 
func main() {
    var names map[int]string    // name map has int keys and string values
}
复制代码

在我们的示例中,键的类型为Int,而值得类型为字符串。

初始化Map

走起,我们来学学如何初始化一个Map结构体。

使用Make()函数

函数make()可以用于初始化地图,如下所示:

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
    names[0] = "John"
    names[1] = "Jane"
 
    fmt.Println(names)  // map[0:John 1:Jane]
}
复制代码

使用语法

package main
 
import (
    "fmt"
)
 
func main() {
    var names = map[int]string {
        0: "John",
        1: "Jane",   // last comma is a must
    }
     
     
    fmt.Println(names)  // prints map[0:John 1:Jane]
}
复制代码

在GoLang中使用地图

我们可以如同在Java中操作Map结构一样,在Go中,可以在Map插入、删除、查找key。

在地图中插入key

目前,两种方式插入key。初始化时插入key或使用索引语法进行初始化。

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
     
    names[0] = "Freddy"    // indexed insertion
    names[1] = "Shawn"
     
    fmt.Println(names)  // prints map[0:Freddy 1:Shawn]
}
复制代码

在地图中获取值

我们可以使用索引符号从映射中获取与key相关联的值,如下所示:

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
     
    names[0] = "Freddy"    // indexed insertion
    names[1] = "Shawn"
     
    fmt.Println(names[1])  // prints Shawn
}
复制代码

检查key是否存在

当我们尝试获取一个值时,我们得到一个布尔值。这有助于检查key是否存在。

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
     
    names[0] = "Freddy"    // indexed insertion
    names[1] = "Shawn"
     
    fred, exists := names[0]
    if(exists) {
        fmt.Printf("%s exists", fred)  // prints "Freddy exists"
    }   
}
复制代码

Map删除key

我们使用删除功能从Map中删除key。

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
     
    names[0] = "Freddy"    // indexed insertion
    names[1] = "Shawn"
    names[2] = "Batman"
     
    // delete shawn
    delete(names, 1) 
    fmt.Println(names)     // prints map[0:Freddy 2:Batman]
}
复制代码

遍历Map

使用范围,我们可以遍历Map,并同时获得Key和Value

package main
 
import (
    "fmt"
)
 
func main() {
    var names = make(map[int]string)
     
    names[0] = "Freddy"    // indexed insertion
    names[1] = "Shawn"
    names[2] = "Batman"
    names[3] = "Spiderman"
    names[4] = "Joker"
     
    for _, name := range names {
        fmt.Println(name)
    }
     
    // prints: 
        // Joker
        // Freddy
        // Shawn
        // Batman
        // Spiderman
}
复制代码

总结

我们从简单来,到简单去,了解Map的相关操作。

走起来了。。。学习。

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000