2

HTMLテンプレート(実際にはJavaScript部分)にnullまたは文字列をメールで入れたい:

var email = null;
// or a string:
var email = "somebody@somewhere.com";

でもテンプレで

var email = {{.Email}};

毎回引用符付きの文字列を取得します:

var email = "null";
var email = "somebody@somewhere.com";

修正方法は?

編集: ここに私のコードがあります: http://play.golang.org/p/8k4s8dv2PE

Go が文字列を引用符で囲み、コメントを削除していることがわかります。前処理または後処理があります。

4

2 に答える 2

5

コードを見なくても、私にできる最善のことは、必要な機能を示す例を提供することです。

推測する必要がある場合は、渡されたデータは文字列ポインターではなく文字列であると言えます。文字列は nil/null の値を持つことはできず、文字列ポインターのみが可能です。それは「null」ではなく「」を生成しますが(ここで示されているように)、コードでこれが何か奇妙なことをしているとしか想像できません。

リンクの腐敗を防ぐために、以下のコード例を複製しましたが、リンクをクリックして出力を確認することをお勧めします。

必要な機能:

package main

import (
    "log"
    "os"
    "html/template"
)

type TemplateData struct {
    Email *string
}

func main() {

    const temp = "<script>var email = {{.Email}};</script>\n"

    t := template.Must(template.New("email_template").Parse(temp))
    email := "somebody@somewhere.com"
    err := t.Execute(os.Stdout, TemplateData{
        Email: &email,
    })
    if err != nil {
        log.Println("executing template:", err)
    }
    err = t.Execute(os.Stdout, TemplateData{
        Email: nil,
    })
    if err != nil {
        log.Println("executing template:", err)
    }

}

「null」文字列を使用しようとしています:

package main

import (
    "log"
    "os"
    "html/template"
)

type TemplateData struct {
    Email string
}

func main() {

    const temp = "<script>var email = {{.Email}};</script>\n"

    t := template.Must(template.New("email_template").Parse(temp))
    email := "somebody@somewhere.com"
    err := t.Execute(os.Stdout, TemplateData{
        Email: email,
    })
    if err != nil {
        log.Println("executing template:", err)
    }
    err = t.Execute(os.Stdout, TemplateData{
    })
    if err != nil {
        log.Println("executing template:", err)
    }

}
于 2013-01-04T06:45:12.897 に答える