[GO]何为映射-5
映射是一种数据结构,用来存储无序的键值对,键值对那么最方便的便是检索数据。
映射的创建
1.通过make函数
创建一个映射,键和值的类型都是int。package mainimport (
“fmt”
)func main() {
dict := make(map[int]int)
fmt.Println(dict, len((dict)))}
map[] 0
2.通过映射字面量创建
通过这种方式,映射的初始长度会根据你初始的指定的键值对的数量确定。另外注意逗号!package mainimport (
“fmt”
)func main() {
dict := map[string]int{
“apple”: 5,
“banana”: 2,
“peach”: 8, //注意这里的逗号,不然会报错
}
fmt.Println(dict, len((dict)))dict2 := map[int]int{1: 2, 2: 3} fmt.Println(dict2, len((dict2)))
}
map[apple:5 banana:2 peach:8] 3
map[2:3 1:2] 2
3.键值的类型
映射的键可以是任何值。可以用==运算符作比较的。但是切片,函数等不能作为key,如下。package mainimport (
“fmt”
)func main() {
dict := map[[]string]int{}fmt.Println(dict, len((dict)))
}
invalid map key type []string
但是能作为值value。
package main import ( "fmt" ) func main() { dict := map[string][]int{} fmt.Println(dict, len((dict))) }
映射的使用
1.赋值
通过指定映射的键来对值进行修改。这里我们能看到,如果没有的话会自动添加,已经存在的key会进行修改。package mainimport (
“fmt”
)func main() {
dict := map[string]int{
“apple”: 5,
“banana”: 2,
“peach”: 8,
}
dict[“apple”] = 9//如果没有会自动添加 dict["app"] = 10 fmt.Println(dict, len((dict)))
}
map[apple:9 banana:2 peach:8 app:10] 4
2.判断是否存在当前键
package mainimport (
“fmt”
)func main() {
dict := map[string]int{
“apple”: 5,
“banana”: 2,
“peach”: 8,
}value, exists := dict["apple"] if exists { fmt.Println(value) } else { fmt.Println("不存在") }
}
5
3.遍历映射
package mainimport (
“fmt”
)func main() {
dict := map[string]int{
“apple”: 5,
“banana”: 2,
“peach”: 8,
}
for key, value := range dict {
fmt.Printf(“key:%s,value:%d\n”, key, value)
}}
key:apple,value:5
key:banana,value:2
key:peach,value:8
4.映射的删除
如果要把一个键值对从映射中删去,那么使用内置函数delete。package mainimport (
“fmt”
)func main() {
dict := map[string]int{
“apple”: 5,
“banana”: 2,
“peach”: 8,
}
fmt.Println(dict, len(dict))
delete(dict, “banana”)fmt.Println(dict, len(dict))
}
map[apple:5 banana:2 peach:8] 3
map[apple:5 peach:8] 2
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com
文章标题:[GO]何为映射-5
文章字数:538
本文作者:周信
发布时间:2019-10-08, 22:44:16
最后更新:2023-05-03, 10:25:35
原始链接:http://zx21.xyz/2019/10/08/GO-何为映射-5/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。