func formatFuncName(v fmtVerb, f string) string {
	i := strings.LastIndex(f, "/")
	j := strings.Index(f[i+1:], ".")
	if j < 1 {
		return "???"
	}
	pkg, fun := f[:i+j+1], f[i+j+2:]
	switch v {
	case fmtVerbLongpkg:
		return pkg
	case fmtVerbShortpkg:
		return path.Base(pkg)
	case fmtVerbLongfunc:
		return fun
	case fmtVerbShortfunc:
		i = strings.LastIndex(fun, ".")
		return fun[i+1:]
	}
	panic("unexpected func formatter")
}
func formatFuncName(v fmtVerb, f string) string {
	i := strings.LastIndex(f, "/")
	j := strings.Index(f[i+1:], ".")
	if j < 1 {
		return "???"
	}
	pkg, fun := f[:i+j+1], f[i+j+2:]
	switch v {
	case fmtVerbLongpkg:
		return pkg
	case fmtVerbShortpkg:
		return path.Base(pkg)
	case fmtVerbLongfunc:
		return fun
	case fmtVerbShortfunc:
		i = strings.LastIndex(fun, ".")
		return fun[i+1:]
	}
	panic("unexpected func formatter")
}
func formatFuncName ( v fmtVerb , f string ) string { i := strings . LastIndex ( f , " " ) j := strings . Index ( f [ i + 1 : ] , " " ) if j < 1 { return " " } pkg , fun := f [ : i + j + 1 ] , f [ i + j + 2 : ] switch v { case fmtVerbLongpkg : return pkg case fmtVerbShortpkg : return path . Base ( pkg ) case fmtVerbLongfunc : return fun case fmtVerbShortfunc : i = strings . LastIndex ( fun , " " ) return fun [ i + 1 : ] } panic ( " " ) }
// formatFuncName tries to extract certain part of the runtime formatted
// function name to some pre-defined variation.
//
// This function is known to not work properly if the package path or name
// contains a dot.
formatFuncName tries to extract certain part of the runtime formatted function name to some pre - defined variation . This function is known to not work properly if the package path or name contains a dot .