github.com/mweagle/Sparta@v1.15.0/archetype/archetype.go (about) 1 package archetype 2 3 import ( 4 "fmt" 5 "runtime" 6 ) 7 8 func reactorName(reactor interface{}) string { 9 // If there isn't one, who is the caller? 10 if reactor == nil { 11 pc, _, _, _ := runtime.Caller(1) 12 reactor = runtime.FuncForPC(pc) 13 } 14 15 reactorName := fmt.Sprintf("%T", reactor) 16 reactorNameProvider, reactorNameProviderOk := reactor.(ReactorNameProvider) 17 if reactorNameProviderOk { 18 reactorName = reactorNameProvider.ReactorName() 19 } 20 return reactorName 21 }