如何在函数中多次添加一些行?

我正在使用 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

)


qq_花开花谢_0
浏览 113回答 1
1回答

慕斯709654

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"))    }})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go