package service import ( "go/ast" ) func addTypeByValue(s *ast.ValueSpec) (code string) { if len(s.Values) == 0 { return } value := s.Values[0] switch v := value.(type) { case *ast.BasicLit: code += handleBasicLitType(v) } return } func handleValueSpecNames(names []*ast.Ident) (code string) { nado_zapyatuyu := false for _, name := range names { if nado_zapyatuyu { code += "," } if isPointerType { code += "*" } code += handleIdentExpr(name) nado_zapyatuyu = true } return } func handleValueSpecType(expr ast.Expr) (code string) { switch t := expr.(type) { case *ast.SelectorExpr: code += handleSelectorExpr(t) case *ast.Ident: code += handleIdentExpr(t) case *ast.StarExpr: code += handleStarExpr(t) case *ast.ArrayType: code += handleArray(t) } return } func handleValueSpecValues(values []ast.Expr) string { code := "" for _, value := range values { switch v := value.(type) { case *ast.BasicLit: code += handleBasicLit(v) case *ast.BinaryExpr: code += handleBinaryExpr(v) case *ast.SelectorExpr: code += handleSelectorExpr(v) case *ast.CallExpr: code += handleCallExpr(v) } } return code }