Go语言的map类型不会引发空指针异常。

huangapple go评论74阅读模式
英文:

go lang map not throwing null pointer

问题

为什么这个程序没有抛出任何空指针异常

https://go.dev/play/p/37reql6Pdb5

即使 m 是空的,仍然在 m 上进行访问。

英文:

why this program is not throwing any null pointer exception

https://go.dev/play/p/37reql6Pdb5

eventhough m is null, still accessing on m.

答案1

得分: 7

请看这段代码片段:

package main

import "fmt"

func main() {
	var m map[string]string = nil
	fmt.Println(m) // 输出: "map[]"

}

这是一种预期的行为,因为nil在许多类型的变量中充当零值,包括(但不限于)mapsslices

此外,在Golang中没有"Exception"这样的东西。您可以使用以下语法检查映射中是否存在某个值:

value, found := m["key"]

其中found变量指示值是否存在于映射中。

英文:

Check out this code snippet:

package main

import "fmt"

func main() {
	var m map[string]string = nil
	fmt.Println(m) // output: "map[]"

}

This is an intended behavior since nil acts as zero value for many types of variables, including (but not limited to) maps and slices.

Also, there's no such thing in Golang as "Exception". You can check if a value exists in your map using this syntax:

value, found := m["key"]

where the found variable indicates if the value exists in the map.

huangapple
  • 本文由 发表于 2022年7月25日 14:12:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/73104696.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定