Home  >  Article  >  Backend Development  >  How to embed custom types into other types in Golang?

How to embed custom types into other types in Golang?

WBOY
WBOYOriginal
2024-06-02 10:54:57496browse

Embedding custom types in Go: Define a custom type and embed it into another type. Access fields of a nested type through the name of the embedded type. Embedded types provide a flexible and extensible mechanism for creating complex data structures.

如何在 Golang 中将自定义类型嵌入其他类型?

#How to embed custom types in Go?

Introduction:
In Go, embedding allows you to use custom types as part of other types, which is useful for creating complex data structures and implementing compositions.

Syntax:

type EmbeddedType struct {
  // 嵌入的自定义类型
  CustomType
}

Example:
Let us consider a Person structure which has a name and an age fields, we want to embed it in another Employee structure that has department and salary fields.

Code:

// 自定义类型:Person
type Person struct {
  Name string
  Age  int
}

// 嵌入 Person 类型
type Employee struct {
  Person
  Department string
  Salary    int
}

Practical case:
Suppose we have a slice containing the Employee structure:

employees := []Employee{
  {
    Person: Person{
      Name: "John Doe",
      Age:  30,
    },
    Department: "Engineering",
    Salary:    50000,
  },
  // ...其他员工
}

We can iterate over the slice and access the Person fields:

for _, emp := range employees {
  fmt.Printf("Employee Name: %s, Age: %d\n", emp.Name, emp.Age)
}

Conclusion:
Embedded in Go is a powerful mechanism, It allows you to create flexible and extensible data structures. By embedding custom types into other types, you can easily create complex objects without having to manually copy or manage duplicate code.

The above is the detailed content of How to embed custom types into other types in Golang?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn