你如何在 Go AST 中表示 nil?
How do you represent nil in Go AST?
查看 Go AST documentation, 我没有在代码中看到任何节点类型来表示 nil
。 BasicLit 没有在它接受的令牌类型列表中涵盖它,事实上,当我查看 go/token
的源代码时,我根本没有看到 nil
令牌!
如果我想创建 if x != nil
形式的 AST,我该怎么做 nil
?
根据 Go 规范,nil
是预先声明的 标识符 。因此,它在 AST 中用 *ast.Ident
表示:
node := ast.NewIdent("nil")
查看 Go AST documentation, 我没有在代码中看到任何节点类型来表示 nil
。 BasicLit 没有在它接受的令牌类型列表中涵盖它,事实上,当我查看 go/token
的源代码时,我根本没有看到 nil
令牌!
如果我想创建 if x != nil
形式的 AST,我该怎么做 nil
?
根据 Go 规范,nil
是预先声明的 标识符 。因此,它在 AST 中用 *ast.Ident
表示:
node := ast.NewIdent("nil")