首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

go/format(格式)

  • import "go/format"
  • 概述
  • 索引
  • 示例

概述

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

索引

  • func Node(dst io.Writer, fset *token.FileSet, node interface{}) error
  • func Source(src []byte) ([]byte, error)

示例

节点

包文件

代码语言:javascript
复制
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。

示例

代码:

代码语言:txt
复制
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())

输出:

代码语言:javascript
复制
(6 + 2*3) / 4
代码语言:javascript
复制
func Source(src []byte) ([]byte, error)

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

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

扫码关注腾讯云开发者

领取腾讯云代金券