我正在使用 Jennifer,它是 Go 的代码生成器。我想编写代码来生成函数main,使得某些行可能是count次数,其中count是我从文件中读取的变量。我尝试使用循环创建所需的字符串for并将其传递给参数,但Block()只接受 type Code。functoret := jen.Func().Id("main").Params().Block(jen.Id("a").Op(":=").Id("b")jen.Id("a").Op(":=").Id("c")jen.Id("a").Op(":=").Id("d") //count number of times)
1 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
Block接受一片代码片段,所以先构建切片再调用Block:
code := []jen.Code{
jen.Id("a").Op(":=").Id("b"),
jen.Id("a").Op(":=").Id("c"),
}
for i := 0; i < count; i++ {
code = append(code, jen.Id("a").Op(":=").Id("d"))
}
functoret := jen.Func().Id("main").Params().Block(code...)
或者,使用BlockFunc和Group.Add 方法:
functoret := jen.Func().Id("main").Params().BlockFunc(func(g *jen.Group) {
g.Add(jen.Id("a").Op(":=").Id("b"))
g.Add(jen.Id("a").Op(":=").Id("c"))
for i := 0; i < count; i++ {
g.Add(jen.Id("a").Op(":=").Id("d"))
}
})
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消