为什么这个程序不会恐慌?
package main
import "fmt"
func main() {
m := make(map[string]string)
m["test"] = "test"
delete(m, "tes1t")
m = nil
fmt.Println("End")
fmt.Println(m["test"])
}
Run Code Online (Sandbox Code Playgroud)
https://go.dev/play/p/37reql6Pdb5
尽管如此m,nil仍然可以阅读 中的项目m。
查看这个代码片段:
package main
import "fmt"
func main() {
var m map[string]string = nil
fmt.Println(m) // output: "map[]"
}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为,因为nil对于许多类型的变量(包括(但不限于)映射和切片)充当零值。
另外,Golang 中不存在“异常”这样的东西。您可以使用以下语法检查映射中是否存在值:
value, found := m["key"]
Run Code Online (Sandbox Code Playgroud)
其中found变量指示该值是否存在于映射中。
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |