2016-02-22 340 views
2

我想弄清楚如何删除我的模板中由{{}}和{{end}}放置的新行。我得到下面的输出没有任何的“ - ”标签:Golang模板范围换行删除

type {{makeGoTableName .TableName}} struct { 
    {{range $key, $value := .TableData}} 
    {{makeGoColName $value.ColName}} {{$value.ColType}} `db:"{{makeDBColName $value.ColName}}",json:"{{$value.ColName}}"` 
    {{end}} 
} 

结果:

type Dogs struct { 

    ID int64 `db:"id",json:"id"` 

    DogNumber int64 `db:"dog_number",json:"dog_number"` 

} 

如果我添加 - 标签像这样,我可以得到它接近可取的,但它打破最后关闭支架的压痕:

type Dogs struct { 
    ID int64 `db:"id",json:"id"` 
    DogNumber int64 `db:"dog_number",json:"dog_number"` 
    } 
012:

type {{makeGoTableName .TableName}} struct { 
    {{range $key, $value := .TableData -}} 
    {{makeGoColName $value.ColName}} {{$value.ColType}} `db:"{{makeDBColName $value.ColName}}",json:"{{$value.ColName}}"` 
    {{end -}} 
} 

在结果

有什么建议吗?

+1

我建议[格式化从模板输出(https://开头godoc .org/go/format#Source),而不是调整模板以规范格式创建Go代码。格式化模板输出将得到空白右侧,对齐字段标签等,等等。请参阅[这个答案](http://stackoverflow.com/questions/34126083/is-it-possible-to-use-gofmt-on -templates-that-are-designed-to-used-used-go-ge/34126322#34126322)以获取更多信息。 –

+0

@MuffinTop嘿,这真的很酷!谢谢。 – b0xxed1n

回答

3

其大多与结尾的斜线打,尽量

package main 

import (
    "os" 
    "text/template" 
) 

type myGreetings struct { 
    Greet []string 
} 

func main() { 
    const txt = ` 
{ 
     {{- range $index, $word := .Greet}} 
    Hello {{$word -}}!!! 
     {{- end}} 
} 
` 
    greetText := myGreetings{ 
     Greet: []string{"World", "Universe", "Gophers"}, 
    } 
    t := template.Must(template.New("Text").Parse(string(txt))) 
    t.Execute(os.Stdout, greetText) 

} 

https://play.golang.org/p/eGm3d3IJPp

输出:

{ 
    Hello World!!! 
    Hello Universe!!! 
    Hello Gophers!!! 
}