2016-07-02 13 views
3

助けてください。 は、私は、構造体テンプレート内の構造体の配列

type myType struct { 
    ID string 
    Name 
    Test 
} 

とタイプを持っていると私は、すべての構造体のフィールドを持つテンプレートで私のリストを印刷することができますどのようにタイプ

var List []MyType; 

の配列を持っていますか?

ありがとうございました!

+0

「テンプレートで印刷する」とはどういう意味ですか?

{{} iがリストの範囲に対して} ​​リスト[I] .ID ​​リスト[I] .nameの ​​リスト[i]が.TEST {:などのようなテンプレートの –

+0

{end for}}

答えて

1

rangeと変数の割り当てを使用します。 text/template documentationの該当するセクションを参照してください。また、以下の例を参照してください。あなたはHTMLテンプレートの話をしている場合は

package main 

import (
    "fmt" 
    "os" 
    "text/template" 
) 

type myType struct { 
    ID string 
    Name string 
    Test string 
} 

func main() { 
    list := []myType{{"id1", "name1", "test1"}, {"i2", "n2", "t2"}} 

    tmpl := ` 
<table>{{range $y, $x := . }} 
    <tr> 
    <td>{{ $x.ID }}</td> 
    <td>{{ $x.Name }}</td> 
    <td>{{ $x.Test }}</td> 
    </tr>{{end}} 
</table> 
` 

    t := template.Must(template.New("tmpl").Parse(tmpl)) 

    err := t.Execute(os.Stdout, list) 
    if err != nil { 
     fmt.Println("executing template:", err) 
    } 
} 

https://play.golang.org/p/W5lRPxD6r-

+0

ありがとう、Amir –

+0

出力がHTMLの場合はいつでも['html/template'](https://golang.org/pkg/html/template/)を使用してください。コードの注入に対して安全です。 – icza

0

を、ここでは次のようになりたいものです。

{{range $idx, $item := .List}} 
<div> 
    {{$item.ID}} 
    {{$item.Name}} 
    {{$item.Test}} 
</div> 
{{end}} 

そして、これはあなたがいることを合格したい方法ですスライスをテンプレートに貼り付けます。

import (
htpl "html/template" 
"io/ioutil" 
) 

content, err := ioutil.ReadFile("full/path/to/template.html") 
if err != nil { 
    log.Fatal("Could not read file") 
    return 
} 

tmpl, err := htpl.New("Error-Template").Parse(string(content)) 
if err != nil { 
    log.Fatal("Could not parse template") 
} 


var html bytes.Buffer 
List := []MyType // Is the variable holding the actual slice with all the data 
tmpl.Execute(&html, type struct { 
    List []MyType 
}{ 
    List 
}) 
fmt.Println(html) 
関連する問題