如何检查Golang的地图是否为空?

如何检查Golang的地图是否为空?,go,hashmap,Go,Hashmap,当出现以下代码时: if map == nil { log.Fatal("map is empty") } 运行时,不会执行log语句,而fmt.Println(map)表示映射为空: map[] 您可以使用len: if len(map) == 0 { .... } 从 len(s)映射[K]T映射长度(定义的键数) 下面的示例演示了可用于检查映射是否为空的nil检查和长度检查 package main import ( "fmt" ) func main()

当出现以下代码时:

if map == nil {
    log.Fatal("map is empty")
}
运行时,不会执行log语句,而
fmt.Println(map)
表示映射为空:

map[]

您可以使用
len

if len(map) == 0 {
    ....
}

len(s)映射[K]T映射长度(定义的键数)


下面的示例演示了可用于检查映射是否为空的nil检查和长度检查

package main

import (
    "fmt"
)

func main() {
    a := new(map[int64]string)
    if *a == nil {
        fmt.Println("empty")
    }
    fmt.Println(len(*a))
}
印刷品

empty
0

对于那些想知道复杂性的人来说,它是O(1)。这里是。这个问题有很多向上的投票,但我认为这里有一点误解:一个映射可以是
nil
,或者可以初始化并在其中包含0值。这是两种不同的情况<代码>新建(映射[int64]字符串)返回指向映射的未初始化指针。你不能用它来检查地图是否是空的。