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  }