map的操作
map key的使用注意事项
map演示带详细注解
package main
import "fmt"
func main() {
m := map[string]string{
"name": "xingchen",
"course": "goland",
"site": "www.z88j.com",
"quality": "notbad",
}
m2 := make(map[string]int) //另一种定义map的方法 m2 ==empty map
var m3 map[string]int // m3 == nil
fmt.Println(m, m2, m3)
fmt.Println("map 遍历")
//遍历map map遍历是无序的是一个哈希map。无序你运行几次就会发现for 里面println打印的顺序会和前几次运行打印顺序不一致。
//如果想要排序就要手动进行map排序,可以吧map加到slice里面,然后slice可以排序,然后再进遍历这个map
for k, v := range m {
fmt.Println(k, v)
}
fmt.Println("获取 map 值")
courseName := m["course"]
fmt.Println(courseName)
//如果取不存在的map 值 就会返回初始值,string初始值是空字符串 go不会进行报错,ok这个参数判断是否存在这个key false 是不存在
if couName, ok := m["cou"]; ok {
fmt.Println(couName, ok)
} else {
fmt.Println("key 不存在")
}
fmt.Println("删除 map 元素")
name, ok := m["name"]
fmt.Println(name, ok)
//map删除
delete(m, "name")
//注意:上面能用:= 是因为 name 这个没进行声明。下面name和ok变量已经声明过了。就不能用:= 只能用= 不然就会报错
name, ok = m["name"]
fmt.Println(name, ok)
fmt.Println("编辑map值")
m["name"] = "yaoyuan"
fmt.Println(m["name"])
//map是使用哈希表进行实现的,所以必须可以进行比较相等。
//除了 slice, map function 的内建类型都可以作为key
//struct结构体类型 也可以作为key。不过前提是 不能包含 slice, map function 内建类型。编译时候编译器会进行检查。不然编译会不通过。
}
下面是输出结果
GOROOT=/usr/local/Cellar/go/1.16.4/libexec #gosetup
GOPATH=/Users/yaoyuan/go #gosetup
/usr/local/Cellar/go/1.16.4/libexec/bin/go build -o /private/var/folders/3d/546h4f6n3tndn21mdhq3kpnr0000gn/T/___go_build_imooc_com_ccmouse_learngo__4_ /Users/yaoyuan/IdeaProjects/learngo/maps.go #gosetup
/private/var/folders/3d/546h4f6n3tndn21mdhq3kpnr0000gn/T/___go_build_imooc_com_ccmouse_learngo__4_
map[course:goland name:xingchen quality:notbad site:www.z88j.com] map[] map[]
map 遍历
name xingchen
course goland
site www.z88j.com
quality notbad
获取 map 值
goland
key 不存在
删除 map 元素
xingchen true
false
编辑map值
yaoyuan
Process finished with the exit code 0
原创文章,作者:星辰,如若转载,请注明出处:https://www.z88j.com/313.html