📜  Golang 中的匿名结构和字段

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

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