一尘不染

如何检查一个空的结构?

go

我定义一个结构…

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

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

session = Session{};

然后,我想检查一下是否为空:

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

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


阅读 208

收藏
2020-07-02

共1个答案

一尘不染

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

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

游乐场的例子

由于存在歧义,因此在if条件下,在组合文字周围需要括号。

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

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

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