We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
map[keyType]valueType 用于存放键值对。
map[keyType]valueType
var nilMap map[string]int
像上面这样声明后未初始化的 map 自动赋成了零值 nil。长度为 0,尝试读取它身上的值时,始终返回 valueType 类型的零值,而尝试设置值为 nil 的 map 则会抛错。
nil
声明并使用空对象字面量来初始化:
m := map[string]int{}
与 nil 的区别在于它并不是无值 ,可安全地进行读写操作。
声明并初始化一个非空 map:
func main() { names := map[string][]string{ "class1": {"Tom", "David"}, "class2": {"Lily"}, } fmt.Println(names) // map[class1:[Tom David] class2:[Lily]] }
如果知道数量但不知道具体存哪些值,可使用 make 声明,长度仍然为 0 ,并且后续添加超过 make 中指定的大小的数据:
make
ages := make(map[int][]string, 10)
map 的一些特征:
len
访问不存在的 key 时得到与类型对应的零值;可以获取到值后进行自增等操作。
func main() { m := map[string]int{} m["foo"] = 1 m["bar"] = 2 fmt.Println(m) fmt.Println(m["baz"]) // 打印不存在的 key 得到默认的零值 m["foo"]++ m["baz"]++ fmt.Println(m["foo"], m["baz"]) }
因为访问不存在的 key 也能正常返回 ,那么问题来了,如何确定一个 key 是否真实存在只是被设置成了零值,还是不存在。答案是使用 Go 提供的 comma ok Idiom 语法:
func main() { m := map[string]int{} m["foo"] = 0 v, ok := m["foo"] fmt.Println(v, ok) // 0 true v2, ok2 := m["bar"] fmt.Println(v2, ok2) // 0 false }
将读取的值放入两个变量中,第一个是 key 对应的值,第二个 bool 值标识该 key 是否存在。
通过 delete 来删除 map 中的 key:
delete
func main() { m := map[string]string{ "foo": "bar", } fmt.Println(m) // map[foo:bar] delete(m, "foo") fmt.Println(m) // map[] }
以上。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
[golang] Map
map[keyType]valueType
用于存放键值对。像上面这样声明后未初始化的 map 自动赋成了零值
nil
。长度为 0,尝试读取它身上的值时,始终返回 valueType 类型的零值,而尝试设置值为nil
的 map 则会抛错。声明并使用空对象字面量来初始化:
与
nil
的区别在于它并不是无值 ,可安全地进行读写操作。声明并初始化一个非空 map:
如果知道数量但不知道具体存哪些值,可使用
make
声明,长度仍然为 0 ,并且后续添加超过make
中指定的大小的数据:map 的一些特征:
nil
nil
做比较len
可得到其中键值对的数量make
可提前声明指定尺寸大小的 mapMap 的读写
访问不存在的 key 时得到与类型对应的零值;可以获取到值后进行自增等操作。
因为访问不存在的 key 也能正常返回 ,那么问题来了,如何确定一个 key 是否真实存在只是被设置成了零值,还是不存在。答案是使用 Go 提供的 comma ok Idiom 语法:
将读取的值放入两个变量中,第一个是 key 对应的值,第二个 bool 值标识该 key 是否存在。
字段的删除
通过
delete
来删除 map 中的 key:以上。
The text was updated successfully, but these errors were encountered: