func GenerateTypeNameByExp()

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
}