使用 go/ast 进行 iota 声明

问题描述

我一直在使用 go/ast 来解析 go 源代码并将其复制到另一个文件中,作为供应商练习的一部分。我已经处理了大部分事情——函数、类型等——但我正在努力处理使用 iota 的 const 声明。我正在遍历 ast.File.Scope.Objects 中的项目,并使用 Scope.Outer == nil 和它们的 Decl == ast.ValueSpec 复制对象的源,基本上意味着顶级变量和常量。

在类型块中:

const (
    a = iota
    b
    c
    d
)

...它们中的每一个注册一个单独的对象,这很公平。但是,我正在努力为它们分配值,因为当我遍历它们时,对象也可能会乱序。我可以将这些值视为 ast.Object.Data,但是当它设置为 1

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)