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.