Data Modeling Patterns
Embedding Methods
Embedded structs promote fields and methods while keeping the composed pieces visible.
Embedding Methods
embedding_methods.go
package main
import "fmt"
type User struct {
Name string
}
func (u User) Label() string {
return u.Name
}
type Admin struct {
User
Level int
}
func main() {
var elevated =
admin := Admin{User: User{Name: "Ada"}, Level: 1}
if elevated {
admin.Level = 3
}
label := admin.Label()
canDeploy := admin.Level >= 3
fmt.Println("label=", label)
fmt.Println("level=", admin.Level)
fmt.Println("can_deploy=", canDeploy)
}
package main
import "fmt"
type User struct {
Name string
}
func (u User) Label() string {
return u.Name
}
type Admin struct {
User
Level int
}
func main() {
var elevated =
admin := Admin{User: User{Name: "Ada"}, Level: 1}
if elevated {
admin.Level = 3
}
label := admin.Label()
canDeploy := admin.Level >= 3
fmt.Println("label=", label)
fmt.Println("level=", admin.Level)
fmt.Println("can_deploy=", canDeploy)
}
embedding
Embed a small struct when a larger model should reuse its fields and methods directly.