In designing a hierarchy of structs, Go provides two approaches for organizing type relationships: embedding and interfaces with empty methods.
Go's "empty method" approach uses interfaces and empty methods to represent type hierarchies. An empty method is a method that does not have any implementation; its purpose is purely to mark that a type satisfies an interface.
In the example provided, where the types Object, Immovable, Building, Movable, Car, and Bike form a hierarchy, the following implementation using interfaces with empty methods would be considered idiomatic:
This method explicitly documents the type relationships and prevents the assignment of incompatible types.
Go also supports embedding, which allows a struct to inherit the methods of another struct. Using embedding, the hierarchy could be represented as follows:
Embedding provides an alternative approach that reduces the number of empty methods by leveraging Go's inheritance-like mechanism.
The above is the detailed content of How to Idiomatically Create a Complex Hierarchy of Structs in Go Using Embedding or Empty Interfaces?. For more information, please follow other related articles on the PHP Chinese website!