package
0.0.43
Repository: https://github.com/yyle88/syntaxgo.git
Documentation: pkg.go.dev

# README

ast fields flat

主要功能是把分组的元素展开为平铺的

简单举例说明,在go语言代码中,函数的参数定义可能是这样的:

(a, b int, c, d Axx)

很明显这样的类型非常不利于使用,这是因为ast语法分析以后会得到:

astFields []*ast.Field

在本例中会有两个 *ast.Field,按照类型分别是 intAxx 的,他们分别有各自的 Names []*Ident 元素列表: 在 int Field 里有 ab 两个元素 在 Axx Field 里有 cd 两个元素

这样想做事情的时候就会略微麻烦些 倒不如把它们转化为平铺的结构,即

(a int, b int, c Axx, d Axx)

这样我们就很清楚有几个参数,这些参数的名称和类型都是很清楚的

这就是所谓的展开为平铺的

同时还做了些其它额外的操作,比如遇到匿名参数或者匿名返回值的时候,比如返回

(int, error)

这个列表的时候,我们当然希望能让数据结构是统一的,因此当把这个展开为平铺结构时,会把匿名的元素补个名称,比如:

(res int, err error)

这样完成结构化以后将会使得后面的操作相对简单些。

当然顺带还有个操作是,在包内定义的 Axx 类型在包外使用时就得使用 pkg.Axx 这样的类型,代码里有这个转换的逻辑。

但整体来说这个包的主要功能就是,把分组的参数列表转换为平铺的。