Day11-Go映射map

前言

前面我们介绍了几种变数容器,例如阵列和切片,这些皆以数字做为索引,而今天要介绍的映射(map),是另一种容器,储存键/值 (key/value) 对,是将键作为索引,以键来取相对的值。

建立映射

在建立映射时,会搭配make来建立,而map也没有长度的限制,以下示范建立一个空的map:

package main
 
import (
   "fmt"
)
func main() {
   // 宣告一个空的映射
   m := make(map[string]string)
   // 印出map
   fmt.Println(m)
}

然而填入映射的方式,与阵列和切片类似,这里以程序码来示范一下如何填入map的键/值对:

package main
 
import (
   "fmt"
)
func main() {
   // 宣告一个空的映射
   m := make(map[string]string)
    // 填入map
   m["台北市"] = "柯文哲"
   m["台中市"] = "卢秀燕"
   m["高雄市"] = "陈其迈"
   // 印出map
   fmt.Println(m)
}

空键值

如果今天印出一个 map 中不存在的键所对应的值,会是印出什麽呢?

package main
 
import (
   "fmt"
)
func main() {
   // 宣告一个空的映射
   m := make(map[string]string)
   // 填入map
   m["台北市"] = "柯文哲"
   m["台中市"] = "卢秀燕"
   m["高雄市"] = "陈其迈"
   // 印出map
   fmt.Println(m["台南市"])
}

以上面的范例,在最後印出的为空的值,如果不确定键/值对是否存在,也可以用以下语法检查:

package main
 
import (
   "fmt"
)
func main() {
   // 宣告一个空的映射
   m := make(map[string]string)
   // 填入map
   m["台北市"] = "柯文哲"
   m["台中市"] = "卢秀燕"
   m["高雄市"] = "陈其迈"
   // 确认是否为键值
   v, ok := m["台北市"]
   fmt.Println(v, ok) // 柯文哲 true
}

v 变数为键对应到的值,ok 则为布林值,代表键值是否存在,像这个例子,因为 "台北市" 为存在的键,所以 ok 对应到的值为 true,相反的带入 "台南市" ,就会印出 false。

删除键值对

如果想删除某对键/值,我们可以用 delete 函式来处理:

package main
 
import (
   "fmt"
)
func main() {
   // 宣告一个空的射.
   m := make(map[string]string)
 
   // 填入map
   m["台北市"] = "柯文哲"
   m["台中市"] = "卢秀燕"
   m["高雄市"] = "陈其迈"
   // 删除一对键值
   delete(m, "台北市")
   // 印出一对键值
   fmt.Println(m)
}

结语

映射的特色是,我们能由键得到值,但不能由值得到键;另外,键不能重覆,但值可以。希望今天介绍映射给各位读者,各位读者可以知道映射如何使用。下一篇我们将介绍 Go 语言的指标,感谢今天的阅读!

参考来源

https://opensourcedoc.com/golang-programming/map/


<<:  Day7 Data types, Variables, and Operators (Ⅲ)

>>:  Day 17 : Docker 也想上云端 (Azure)

Day 2 公告吧!

当我们浏览着一列列毫无止尽的文字,不知道该如何心安的情况下... 网路的世界本来就是犹如沙子般繁多的...

【Day26】:从struct进化成class的物件导向技巧(下)

建构子 建构子(constructor)是一种初始化类别物件的成员函式,每一种类别都有一个建构子,当...

Day5 被动情蒐(2)-dig、fierce、DNSenum、DNSrecon、Sublist3r、dnsdumpster

DNS 工具:dig Domain Information Groper 一样可以检测 DNS 服...

【DAY 25】Microsoft 365 的方案有好多种,到底哪些适合我?(下)

哈罗大家好~ 所以接续昨天提到的内容,IT环境建置,除了要思考使用场景外,也要考量整体组织的 IT ...

App 开发经营管理(ㄧ)

APP 营运思考 了解开发 APP 目的,不要为了做 App 而做 确认开发需求 商业目标 开发成本...