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)
示例
节点
包文件
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 的第一行相同包含代码。导入不针对部分源文件进行排序。