Golang 匿名结构体和字段

Golang中的结构体或结构体是一种用户定义的类型,它允许我们将不同类型的元素组合成一个单元。任何现实世界中的实体,如果有一组属性或字段,都可以用结构来表示。

匿名结构体

在Go语言中,你可以创建一个匿名结构。匿名结构是一种不包含名称的结构。当你想创建一个一次性可用的结构时,它很有用。您可以使用以下语法来创建匿名结构。

variable_name := struct{
// fields
}{// Field_values}

让我们借助于一个例子来讨论这个概念。

例子

// Go program to illustrate the
// concept of anonymous structure
package main
  
import "fmt"
  
// Main function
func main() {
  
    // Creating and initializing
    // the anonymous structure
    Element := struct {
        name      string
        branch    string
        language  string
        Particles int
    }{
        name:      "Pikachu",
        branch:    "ECE",
        language:  "C++",
        Particles: 498,
    }
  
    // Display the anonymous structure
    fmt.Println(Element)
}

输出

{Pikachu ECE C++ 498}

匿名字段

在Go结构中,您可以创建匿名字段。匿名字段是那些不包含任何名称的字段,您只需简单地提到字段的类型,Go会自动使用该类型作为字段的名称。您可以使用以下语法来创建结构的匿名字段。

type struct_name struct{
    int
    bool
    float64
}

重要观点

  • 在一个结构中,你不允许创建两个或多个相同类型的字段,如下图所示。
type student struct{
int
int
}

如果你试图这样做,那么编译器将给出一个错误。

  • 你可以把匿名字段和命名字段结合起来,如下所示。
type student struct{
 name int
 price int
 string
}

让我们借助于一个例子来讨论匿名字段的概念。

例子

// Go program to illustrate the
// concept of anonymous structure
package main
  
import "fmt"
  
// Creating a structure
// with anonymous fields
type student struct {
    int
    string
    float64
}
  
// Main function
func main() {
  
    // Assigning values to the anonymous
    // fields of the student structure
    value := student{123, "Bud", 8900.23}
  
    // Display the values of the fields
    fmt.Println("Enrollment number : ", value.int)
    fmt.Println("Student name : ", value.string)
    fmt.Println("Package price : ", value.float64)
}

输出

Enrollment number :  123
Student name :  Bud
Package price :  8900.23