Golang шаблон для исходной и целевой печати - PullRequest
0 голосов
/ 24 ноября 2018

Я хочу сгенерировать шаблон go с циклом, который выглядит следующим образом

target1:
   echo from target2 
target2:
  echo from target2 
targetN:
  echo from targetN

Это просто создает цель и строку после того, как она печатает, с какой цели она называется.

Я пробовалсо следующим, который работает частично, любая идея, что я здесь скучаю?или как я могу упростить код в t.Execute https://play.golang.org/p/iLWQANobKUL

package main

import (
    "bytes"
    "fmt"
    "html/template"
)

func main() {
    t := template.Must(template.New("").Parse(` {{- range .}} {{.Name}}:{{end}}
{{- range .}}
{{.Name}}:
{{"\t"}}echo from {{.Name}} {{.Text}}
{{end}}
`))
    var buf bytes.Buffer
    t.Execute(&buf, []interface{}{map[string]string{"Name": "target1", "Text": "echo"}})
    fmt.Printf("%q\n", buf.String())
}

1 Ответ

0 голосов
/ 24 ноября 2018

Это то, что вам нужно?

package main

import (
    "text/template"
    "os"
)

func main() {
    t := template.Must(template.New("").Parse(`{{- range .}}{{.}}:
    echo from {{.}}
{{end}}
`))
    t.Execute(os.Stdout, []string{"target1", "target2", "target3"})
}

Вывод:

target1:
    echo from target1
target2:
    echo from target2
target3:
    echo from target3

Ссылка: https://golang.org/pkg/text/template/

Обновление:

Если вы хотите использовать конвейер в качестве карты и хотите использовать значение из значения соответствующего ключа, тогда:

package main

import (
    "text/template"
    "os"
)

func main() {
    t := template.Must(template.New("").Parse(`{{- range $key, $val := .}}{{$key}}:
    echo from {{$val}}
{{end -}}
`))
    t.Execute(os.Stdout, map[string]string{"target1": "foo1", "target2": "bar2", "target3": "baz"})
}

Вывод:

target1:
    echo from foo1
target2:
    echo from bar2
target3:
    echo from baz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...