2017-09-21 3 views
1

2列がsql.NullStringsql.NullInt64の列であるデータベースから詳細を取得しました。Goテンプレートのsql.NullStringの値をプリント

ここでは、私がそれらを印刷している間に、それがValidであることを確認した後、データを{3 true}形式で印刷します。私はそれから値3を印刷したいだけです。

どうすればこの問題を解決できますか?

現在、これは、私が印刷しています何をされています

{{ range $value := .CatMenu }} 
    ... // Other data 
    {{ $value.ParentID }} // This is sql.NullInt64 type 
{{ end }} 
+0

その後'Int64'フィールドだけを出力し、' NullInt64'値は出力しません。それでも問題がある場合は、どのように使用するか印刷してください。 – icza

+0

「Int64」フィールドのみを印刷する方法。現在、私は上記のように印刷しています: - '$ value.ParentID' – Belarus

答えて

0

sql.NullInt64する構造体です:

type NullInt64 struct { 
    Int64 int64 
    Valid bool // Valid is true if Int64 is not NULL 
} 

構造体の値を印刷する場合、デフォルトのフォーマットを使用すると、現在見たものです。

有効で、nilでない場合は、数値を保持するフィールドNullInt64.Int64を印刷するだけで簡単に印刷できます。

これは、あなたがそれを行うことができる方法である。

{{ range $value := .CatMenu }} 
    ... // Other data 
    {{ $value.ParentID.Int64 }} // This is sql.NullInt64 type 
{{ end }} 

はそれをテストするには、この簡単な例を参照してください:

vs := []*sql.NullInt64{ 
    {3, true}, 
    {2, true}, 
} 

t := template.Must(template.New("").Parse(
    "{{range .}}{{.Int64}}\n{{end}}", 
)) 

if err := t.Execute(os.Stdout, vs); err != nil { 
    panic(err) 
} 

出力(Go Playground上でそれを試してみてください):

3 
2 
関連する問題