©
本文档使用
php.cn手册 发布
import "go/format"
Overview
Index
Examples
包格式实现Go源的标准格式。
func Node(dst io.Writer, fset *token.FileSet, node interface{}) error
func Source(src []byte) ([]byte, error)
节点
format.go internal.go
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 parses the argument and returns the// corresponding ast.Node.node, err := parser.ParseExpr(expr)if err != nil { log.Fatal(err)}// Create a FileSet for node. Since the node does not come// from a real source file, fset will be empty.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(src []byte) ([]byte, error)
source格式的src采用规范的gofmt风格,并返回结果或(I / O或语法)错误。src应该是一个语法正确的Go源文件,或者一个Go声明或语句的列表。
如果src是部分源文件,则将src的前导空格和尾部空格应用于结果(以便它与src具有相同的前导和尾随空格),并且结果的缩进量与src的第一行相同包含代码。导入不针对部分源文件进行排序。