golangテンプレートの構文は、HTMLタグと特殊文字を解決しません

シーン

時々、テンプレートの構文を使用する必要性は、たとえば、行く時間でhtmlページをレンダリングした後、使用してコード生成テンプレートが行くときに従事するために、たとえば、行きます。トラブルが発生する可能性があります。この時間は、特殊な文字変換が翻訳したものですしたくありません。

書き込みコード・ジェネレータ、「<」記号は、チャネルに関連する問題の一部を生じる、翻訳されたときに私が発生しました。

問題は簡単ですが、あまり情報、私はまた、唯一見つけるのに長い時間のために試してみました。実際には、特殊文字を含む文字列をファイルにtemplate.HTMLタイプに変身し、それをロードします。

解きます

コードを見てください

    t := template.New("initMysql")
    
    type NsqConsumerTpl struct {
        Names        []string
        AngleBracket template.HTML
    }
    
    v := NsqConsumerTpl{
        Names: nsqConsumerIns, 
        AngleBracket:template.HTML("<")
        
    }
        

まず、テンプレートを宣言した後、テンプレートをレンダリングするための構造体を宣言します。そのAngleBracketフィールドは、特殊文字のフィールドがテンプレートに翻訳されていないです。ここで、私は「<」置くために使用されます。

次のコードの文テンプレートセクション、およびテンプレート内のこの分野への直接参照、この時間は、「<」に翻訳されることはありません。

    tpl := `func (p *NsqConsumerMgr) Start() error {
        {{range .Names}}
        err := p.{{.}}.ConnectToNSQLookupds(p.{{.}}.LookupAddr)
        if err != nil {
            panic(err)
        }
        {{end}}
    
        ch := make(chan bool)
        {{ .AngleBracket }}-ch
        return nil
    }`

    t.Execute(tpl, v)

あなたが複数の場所を使用する場合は、機能を前方に置くことができます

定義された関数は、関数がtemp.HTMLタイプSTRに変身するために、非常に簡単です。

func unescaped (str string) template.HTML { return template.HTML(str) }

関数はテンプレートに登録されています。

    t = t.Funcs(template.FuncMap{"unescaped": unescaped})

このとき、レンダリングするために使用される構造は、特殊文字は、文字列を直接使用することができます

    type NsqConsumerTpl struct {
        Names        []string
        AngleBracket string
    }

関数エスケープに渡されるパラメータとしてチャネル(チャネル概念的に類似のLinux)AngleBracketによって:これは|テンプレート{エスケープ} {.AngleBracket}、わずかに異なっています。

func (p *NsqConsumerMgr) Start() error {
    {{range .Names}}
    err := p.{{.}}.ConnectToNSQLookupds(p.{{.}}.LookupAddr)
    if err != nil {
        panic(err)
    }
    {{end}}

    ch := make(chan bool)
    {{ .AngleBracket | unescaped}}-ch
    return nil
}
    t.Execute(tpl, v)

比較的簡単に言えば、少しの情報、より激しいチェックし、そして共有するために、これをまとめました。
追加へようこそ

ああ〜のような収穫のポイントを覚えておいてください

おすすめ

転載: www.cnblogs.com/mingbai/p/goTmpl.html