Home  >  Article  >  Backend Development  >  How do Anonymous Fields Work in Go Structs?

How do Anonymous Fields Work in Go Structs?

Linda Hamilton
Linda HamiltonOriginal
2024-11-14 22:22:02620browse

How do Anonymous Fields Work in Go Structs?

Anonymous Fields in Go Structs

In Go, structures can contain anonymous fields, which are fields without explicit names. These fields allow you to embed another struct or type into your current struct, providing access to the fields of the embedded type without explicitly listing them.

Purpose of Anonymous Fields

Anonymous fields serve several purposes:

  • Type Embedding: They allow you to embed the fields of one type into another, reducing code duplication and making it easier to work with complex data structures.
  • Promotion: The first anonymous field is known as the "promoted field." Its fields can be accessed directly on the parent struct, as it acts as if those fields were declared in the parent struct.

Accessing Anonymous Fields

You can access anonymous fields in the same way you would access named fields. The promoted field can be accessed directly using the parent struct's field name. Other anonymous fields can be accessed using the embedded type's field name.

Example

Consider the following code:

package main

import "fmt"

type Widget struct {
    name string
}

type WrappedWidget struct {
    Widget  // Promoted field
    Time time.Time
    Price int64
}

func main() {
    widget := Widget{"my widget"}
    wrappedWidget := WrappedWidget{widget, time.Now(), 1234}

    fmt.Printf("Widget named %s, created at %s, has price %d\n",
        wrappedWidget.name,  // Accessing the promoted field
        wrappedWidget.Time,  // Accessing an anonymous field
        wrappedWidget.Price) // Accessing a normal field
}

Output:

Widget named my widget, created at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, has price 1234

In this example, WrappedWidget embeds the Widget struct and promotes its name field. As a result, you can access the name field directly on the WrappedWidget instance.

The above is the detailed content of How do Anonymous Fields Work in Go Structs?. 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