func newParameterInfo()

in tools/go-agent/tools/enhancement.go [138:163]


func newParameterInfo(name string, tp dst.Expr) *ParameterInfo {
	result := &ParameterInfo{
		Name:     name,
		Type:     tp,
		TypeName: GenerateTypeNameByExp(tp),
	}
	var defaultNil = "nil"
	switch n := tp.(type) {
	case *dst.Ident:
		if n.Name == "string" {
			defaultNil = `""`
		} else if n.Name == "bool" {
			defaultNil = "false"
		} else if strings.HasPrefix(n.Name, "int") || strings.HasPrefix(n.Name, "uint") ||
			strings.HasPrefix(n.Name, "float") || n.Name == "byte" || n.Name == "rune" {
			defaultNil = "0"
		}
	case *dst.UnaryExpr:
		if n.Op == token.INT || n.Op == token.FLOAT {
			defaultNil = "0"
		}
	}
	result.DefaultValueAsString = defaultNil

	return result
}