// Created on savesnippets.com · https://savesnippets.com/5F5HsJolJD0dwj package main import "fmt" type Logger struct { prefix string } func (l *Logger) Log(msg string) { fmt.Printf("[%s] %s\n", l.prefix, msg) } type Server struct { *Logger // embedded — promotes Log() onto Server addr string } func (s *Server) Start() { s.Log("starting on " + s.addr) // calls embedded Logger.Log } func main() { srv := &Server{ Logger: &Logger{prefix: "SRV"}, addr: ":8080", } srv.Start() // [SRV] starting on :8080 srv.Log("manual") // [SRV] manual // Access the embedded field directly if needed: fmt.Println(srv.Logger.prefix) }