前面我们介绍了几种变数容器,例如阵列和切片,这些皆以数字做为索引,而今天要介绍的映射(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)
当我们浏览着一列列毫无止尽的文字,不知道该如何心安的情况下... 网路的世界本来就是犹如沙子般繁多的...
建构子 建构子(constructor)是一种初始化类别物件的成员函式,每一种类别都有一个建构子,当...
DNS 工具:dig Domain Information Groper 一样可以检测 DNS 服...
哈罗大家好~ 所以接续昨天提到的内容,IT环境建置,除了要思考使用场景外,也要考量整体组织的 IT ...
APP 营运思考 了解开发 APP 目的,不要为了做 App 而做 确认开发需求 商业目标 开发成本...