Home > Article > Backend Development > 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:
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!