小编典典

如何检查空结构?

all

我定义了一个结构......

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

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

session = Session{};

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

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

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


阅读 157

收藏
2022-08-03

共1个答案

小编典典

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

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

游乐场示例

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

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

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

if session.playerId == "" {
    fmt.Println("is zero value")
}
2022-08-03