当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO Node用法及代码示例


GO语言"go/format"包中"Node"函数的用法及代码示例。

用法:

func Node(dst io.Writer, fset *token.FileSet, node any) error

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

节点类型必须是 *ast.File、*printer CommentedNode []ast.Decl、[]ast.Stmt 或 assignment-compatible 到 ast.Expr、ast.Decl、ast.Spec 或 ast.Stmt。节点不修改节点。对于表示部分源文件的节点(例如,如果节点不是 *ast.File 或 *printer CommentedNode 不包装 *ast.File),导入不会排序。

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

例子:

package main

import (
	"bytes"
	"fmt"
	"go/format"
	"go/parser"
	"go/token"
	"log"
)

func main() {
	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 = format.Node(&buf, fset, node)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(buf.String())

}

输出:

(6 + 2*3) / 4

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Node。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。