Movatterモバイル変換


[0]ホーム

URL:


printer

packagestandard library
go1.25.5Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2025 License:BSD-3-ClauseImports:15Imported by:7,151

Details

Repository

cs.opensource.google/go/go

Links

Documentation

Overview

Package printer implements printing of AST nodes.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

funcFprint

func Fprint(outputio.Writer, fset *token.FileSet, nodeany)error

Fprint "pretty-prints" an AST node to output.It callsConfig.Fprint with default settings.Note that gofmt uses tabs for indentation but spaces for alignment;use format.Node (package go/format) for output that matches gofmt.

Example
package mainimport ("bytes""fmt""go/ast""go/parser""go/printer""go/token""strings")func parseFunc(filename, functionname string) (fun *ast.FuncDecl, fset *token.FileSet) {fset = token.NewFileSet()if file, err := parser.ParseFile(fset, filename, nil, 0); err == nil {for _, d := range file.Decls {if f, ok := d.(*ast.FuncDecl); ok && f.Name.Name == functionname {fun = freturn}}}panic("function not found")}func printSelf() {// Parse source file and extract the AST without comments for// this function, with position information referring to the// file set fset.funcAST, fset := parseFunc("example_test.go", "printSelf")// Print the function body into buffer buf.// The file set is provided to the printer so that it knows// about the original source formatting and can add additional// line breaks where they were present in the source.var buf bytes.Bufferprinter.Fprint(&buf, fset, funcAST.Body)// Remove braces {} enclosing the function body, unindent,// and trim leading and trailing white space.s := buf.String()s = s[1 : len(s)-1]s = strings.TrimSpace(strings.ReplaceAll(s, "\n\t", "\n"))// Print the cleaned-up body text to stdout.fmt.Println(s)}func main() {printSelf()}
Output:funcAST, fset := parseFunc("example_test.go", "printSelf")var buf bytes.Bufferprinter.Fprint(&buf, fset, funcAST.Body)s := buf.String()s = s[1 : len(s)-1]s = strings.TrimSpace(strings.ReplaceAll(s, "\n\t", "\n"))fmt.Println(s)

Types

typeCommentedNode

type CommentedNode struct {Nodeany// *ast.File, or ast.Expr, ast.Decl, ast.Spec, or ast.StmtComments []*ast.CommentGroup}

A CommentedNode bundles an AST node and corresponding comments.It may be provided as argument to any of theFprint functions.

typeConfig

type Config struct {ModeMode// default: 0Tabwidthint// default: 8Indentint// default: 0 (all code is indented at least by this much)}

A Config node controls the output of Fprint.

func (*Config)Fprint

func (cfg *Config) Fprint(outputio.Writer, fset *token.FileSet, nodeany)error

Fprint "pretty-prints" an AST node to output for a given configuration cfg.Position information is interpreted relative to the file set fset.The node type must be *ast.File, *CommentedNode, []ast.Decl, []ast.Stmt,or assignment-compatible toast.Expr,ast.Decl,ast.Spec, orast.Stmt.

typeMode

type Modeuint

A Mode value is a set of flags (or 0). They control printing.

const (RawFormatMode = 1 <<iota// do not use a tabwriter; if set, UseSpaces is ignoredTabIndent// use tabs for indentation independent of UseSpacesUseSpaces// use spaces instead of tabs for alignmentSourcePos// emit //line directives to preserve original source positions)

Source Files

View all Source files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f orF : Jump to
y orY : Canonical URL
go.dev uses cookies from Google to deliver and enhance the quality of its services and to analyze traffic.Learn more.

[8]ページ先頭

©2009-2025 Movatter.jp