如何在函数中多次添加一些行?
How to add some lines variable number of times in a function?
我正在使用 Jennifer,它是 Go 的代码生成器。
我想编写代码来生成 main
函数,以便某些行可以 count
次,其中 count
是我从文件中读取的变量。
我尝试使用 for
循环创建所需的字符串并将其传递到参数中,但是 Block()
只接受类型 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
)
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 and Group.Add methods:
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"))
}
})
我正在使用 Jennifer,它是 Go 的代码生成器。
我想编写代码来生成 main
函数,以便某些行可以 count
次,其中 count
是我从文件中读取的变量。
我尝试使用 for
循环创建所需的字符串并将其传递到参数中,但是 Block()
只接受类型 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
)
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 and Group.Add methods:
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"))
}
})