Avatar ·

如何检查 Go 中的结构体是否为空?(空结构体,与 nil 比较)

大家好!我刚开始学习 Go,遇到了一个问题。我有一个从函数返回的结构体。有时它是空的(所有字段都是零值),有时是填充的。我需要检查它是否为空,以便不处理它。 在其他语言中,我习惯检查 `null` 或 `None`。在 Go 中,我尝试与 `nil` 比较: ```go type User struct { Name string Age int } func getUser() User { // ... 一些逻辑 return User{} } u := getUser() if u == nil { fmt.Println("empty") } ``` 但编译器报错:`cannot convert nil to type User`。我明白了结构体不是指针,`nil` 不适用于它们。然后我尝试与空结构体比较: ```go if u == User{} { fmt.Println("empty") } ``` 但如果结构体有 slice 或 map 字段,这也不起作用,因为它们不能通过 `==` 比较。如何正确且惯用地检查 Go 中的结构体是否为空?也许有