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)
}
Create a free account and build your private vault. Share publicly whenever you want.