Golang模板范围换行符删除

b0x*_*d1n 4 templates go

我试图弄清楚如何删除{{range}}和{{end}}放在模板中的新行。我得到以下输出,没有任何“-”标签:

type {{makeGoTableName .TableName}} struct {
  {{range $key, $value := .TableData}}
    {{makeGoColName $value.ColName}} {{$value.ColType}} `db:"{{makeDBColName $value.ColName}}",json:"{{$value.ColName}}"`
  {{end}}
}
Run Code Online (Sandbox Code Playgroud)

结果是:

type Dogs struct {

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

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

}
Run Code Online (Sandbox Code Playgroud)

如果我像这样添加-标记,则可以使其接近理想值,但它破坏了最后一个右括号的缩进:

type {{makeGoTableName .TableName}} struct {
  {{range $key, $value := .TableData -}}
    {{makeGoColName $value.ColName}} {{$value.ColType}} `db:"{{makeDBColName $value.ColName}}",json:"{{$value.ColName}}"`
  {{end -}}
}
Run Code Online (Sandbox Code Playgroud)

结果是:

type Dogs struct {
  ID int64 `db:"id",json:"id"`
  DogNumber int64 `db:"dog_number",json:"dog_number"`
  }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 7

主要是在跟着斜杠一起玩,尝试

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)

}
Run Code Online (Sandbox Code Playgroud)

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

输出:

{
  Hello World!!!
  Hello Universe!!!
  Hello Gophers!!!
}
Run Code Online (Sandbox Code Playgroud)