小编典典

如何检查空结构?

go

我定义了一个结构…

type Session struct {
    playerId string
    beehive string
    timestamp time.Time
}

有时我为它分配一个空会话(因为 nil 是不可能的)

session = Session{};

然后我想检查它是否为空:

if session == Session{} {
     // do stuff...
}

显然这是行不通的。我该怎么写?


阅读 152

收藏
2021-11-07

共1个答案

小编典典

您可以使用 == 与零值复合文字进行比较,因为所有字段都是可比较的

if (Session{}) == session  {
    fmt.Println("is zero value")
}

由于解析歧义,if 条件中的复合文字周围需要括号。

上述用法==适用于所有字段都具有可比性的结构。如果结构体包含不可比较的字段(切片、映射或函数),则必须将这些字段与它们的零值一一比较。

比较整个值的另一种方法是比较在有效会话中必须设置为非零值的字段。例如,如果玩家 ID 在有效会话中必须是 != “”,请使用

if session.playerId == "" {
    fmt.Println("is zero value")
}
2021-11-07