📜  在 Golang 中检查结构是否为空

📅  最后修改于: 2021-10-25 02:12:21             🧑  作者: Mango

如果结构为空,则表示该特定结构内不存在字段。在 Golang 中,空结构的大小为零。每当用户想知道创建的结构体是否为空时,他可以通过变量访问主函数的结构体。如果结构内不存在任何字段,他可以简单地显示结构为空。

句法:

type structure_name struct {
    }

有多种方法可以确定结构是否为空,如下所示。

1)检查结构是否为空:

package main
  
import (
    "fmt"
)
  
type Book struct {
}
  
func main() {
    var bk Book
    if (Book{} == bk) {
        fmt.Println("It is an empty structure.")
    } else {
        fmt.Println("It is not an empty structure.")
    }
}

输出:

It is an empty structure.

说明:在上面的示例中,我们创建了一个名为“Book”的结构,其中没有现有字段。在 main函数,我们创建了一个变量来访问我们的结构。由于结构中没有指定字段,它会打印出它是一个空结构。现在,如果结构中存在字段,它将返回它不是空结构的消息,如下所示:

package main
  
import (
    "fmt"
)
  
type Book struct {
    qty int
}
  
func main() {
    var bk Book
    if (Book{500} == bk) {
        fmt.Println("It is an empty structure.")
    } else {
        fmt.Println("It is not an empty structure.")
    }
}

输出:

It is not an empty structure.

说明:在上面的例子中,我们创建了一个名为“Book”的结构,其中我们声明了一个名为“qty”的数据类型为 int 的字段。在 main函数,我们创建了一个变量来访问我们的结构。由于结构中存在一个字段,它会打印出它不是一个空结构。

2) 使用开关盒:

package main
  
import (
    "fmt"
)
  
type articles struct {
}
  
func main() {
    x := articles{}
  
    switch {
    case x == articles{}:
        fmt.Println("Structure is empty.")
    default:
        fmt.Println("Structure is not empty.")
    }
}

输出:

Structure is empty.

说明:在本例中,我们创建了一个名为“articles”的结构,其中没有声明任何字段。在 main函数,我们创建了一个变量“x”并使用 switch case 来访问我们的结构。由于结构中不存在字段,程序将显示结构为空。