我定义了一个结构体...
type Session struct {
playerId string
beehive string
timestamp time.Time
}
有时我给它分配一个空会话(因为 nil 是不可能的)
session = Session{};
然后我想检查它是否为空:
if session == Session{} {
// do stuff...
}
显然这是行不通的。我该怎么写呢?
您可以使用 == 与零值复合文字进行比较,因为中的所有字段Session
are 可比 https://golang.org/ref/spec#Comparison_operators:
if (Session{}) == session {
fmt.Println("is zero value")
}
游乐场示例 http://play.golang.org/p/wRUmxj1naS
因为一个解析歧义 https://golang.org/ref/spec#Composite_literals, if 条件中的复合文字两边需要括号。
指某东西的用途==
以上适用于所有字段都为的结构可比 https://golang.org/ref/spec#Comparison_operators。如果结构体包含不可比较的字段(切片、映射或函数),则必须将这些字段与其零值进行一一比较。
比较整个值的另一种方法是比较必须在有效会话中设置为非零值的字段。例如,如果有效会话中玩家 ID 必须为 != "",则使用
if session.playerId == "" {
fmt.Println("is zero value")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)