2016-02-22 48 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!!! 
}