in tools/go-agent/tools/enhancement.go [174:216]
func GenerateTypeNameByExp(exp dst.Expr) string {
var data string
switch n := exp.(type) {
case *dst.StarExpr:
data = "*" + GenerateTypeNameByExp(n.X)
case *dst.TypeAssertExpr:
data = GenerateTypeNameByExp(n.X)
case *dst.InterfaceType:
data = interfaceName
case *dst.Ident:
data = n.Name
case *dst.SelectorExpr:
data = GenerateTypeNameByExp(n.X) + "." + GenerateTypeNameByExp(n.Sel)
case *dst.Ellipsis:
data = "[]" + GenerateTypeNameByExp(n.Elt)
case *dst.ArrayType:
data = "[]" + GenerateTypeNameByExp(n.Elt)
case *dst.FuncType:
data = "func("
if n.Params != nil && len(n.Params.List) > 0 {
for i, f := range n.Params.List {
if i > 0 {
data += parameterAppender
}
data += GenerateTypeNameByExp(f.Type)
}
}
data += ")"
if n.Results != nil && len(n.Results.List) > 0 {
data += "("
for i, f := range n.Results.List {
if i > 0 {
data += parameterAppender
}
data += GenerateTypeNameByExp(f.Type)
}
data += ")"
}
default:
return ""
}
return data
}