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

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

image.png

微信codeMaster001,欢迎大家加好友,共同进步、学习!!!!

前言

如果说在学习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的相关操作。

走起来了。。。学习。

Go相关的资料,博主已帮大家整理好,如有需要可加v:codeMaster001,免费赠送

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值