go/format(格式)

Package format

  • import "go/format"

  • 概述

  • 索引

  • 示例

概述

格式包实现 Go 源的标准格式。

索引

  • func Node(dst io.Writer, fset *token.FileSet, node interface{}) error

  • func Source(src []byte) ([]byte, error)

示例

节点

包文件

format.go internal.go

func Node(显示源代码)

func Node(dst io.Writer, fset *token.FileSet, node interface{}) error

节点以规范的 gofmt 样式格式化节点并将结果写入 dst。

节点类型必须是* ast.File,* printer.CommentedNode,[] ast.Decl,[] ast.Stmt 或赋值与 ast.Expr,ast.Decl,ast.Spec 或 ast.Stmt 兼容。节点不修改节点。对于表示部分源文件的节点(即,如果节点不是* ast.File 或 *printer.CommentedNode 不是打包一个 *ast.File),导入不会被排序。

该函数可能会返回提前(在写入整个结果之前)并返回格式错误,例如由于错误的 AST。

示例

代码:

const expr = "(6+2*3)/4" // parser.ParseExpr解析参数并返回 // 相应的ast.Node。 node, err := parser.ParseExpr(expr) if err != nil { log.Fatal(err) } // 为节点创建FileSet。 由于节点不来 // 从一个真正的源文件,fset将为空。 fset := token.NewFileSet() var buf bytes.Buffer err = Node(&buf, fset, node) if err != nil { log.Fatal(err) } fmt.Println(buf.String())

输出:

(6 + 2*3) / 4

func Source(显示源代码)

func Source(src []byte) ([]byte, error)

source 格式的 src 采用规范的 gofmt 风格,并返回结果或(I/O 或语法)错误。src 应该是一个语法正确的 Go 源文件,或者一个 Go 声明或语句的列表。

如果 src 是部分源文件,则将 src 的前导空格和尾部空格应用于结果(以便它与 src 具有相同的前导和尾随空格),并且结果的缩进量与 src 的第一行相同包含代码。导入不针对部分源文件进行排序。