2016-02-22 2 views
2

Я пытаюсь выяснить, как я могу удалить новые строки в моем шаблоне, которые помещаются туда {{range}} и {{end}}. Я получаю следующий результат без каких-либо «-» теги:Golang template range newline remove

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 {{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"` 
    } 

Любые идеи?

+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-be-used-with-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!!! 
} 
Смежные вопросы