你如何在 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")