Czy w przypadku danej funkcji można uzyskać jej nazwę? Mówić:
func foo() {
}
func GetFunctionName(i interface{}) string {
// ...
}
func main() {
// Will print "name: foo"
fmt.Println("name:", GetFunctionName(foo))
}
Powiedziano mi, że runtime.FuncForPC może pomóc, ale nie rozumiałem, jak go używać.
go
reflection
go-reflect
moraes
źródło
źródło
GetFunctionName
może zwrócić tę samą nazwę dla różnych funkcji?Nie jest to dokładnie to, czego chcesz, ponieważ rejestruje nazwę pliku i numer linii, ale oto jak to robię w mojej bibliotece Tideland Common Go ( http://tideland-cgl.googlecode.com/ ) przy użyciu pakietu „runtime”:
źródło