如何检查 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 中的结构体是否为空?也许有