Wrapping creates error chains:
// Original error
err := errors.New("connection refused")
// Wrapped once
err = fmt.Errorf("database: %w", err)
// Wrapped again
err = fmt.Errorf("init server: %w", err)
// err.Error(): "init server: database: connection refused"
Each layer adds context. When printed, you see the full path to the root cause.