package cmd import ( "log" "reflect" "runtime" ) type server interface { ListenAndServe() error } func mustInit(fn func() error) { err := fn() if err != nil { ptr := reflect.ValueOf(fn).Pointer() fi := runtime.FuncForPC(ptr) log.Fatalf("%s failed: %v", fi.Name(), err) } } func mustInitAny[T any](s T, fn func(s T) error) { err := fn(s) if err != nil { ptr := reflect.ValueOf(fn).Pointer() fi := runtime.FuncForPC(ptr) log.Fatalf("%s(T) failed: %v", fi.Name(), err) } }