30 lines
496 B
Go
30 lines
496 B
Go
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)
|
|
}
|
|
}
|