Golang のデータベース/SQL パッケージでは、Null[Type] 構造体がデータベース値とその可能な値の処理に役立ちますNULL 値。ただし、NULL 値のテストは困難な場合があります。 .Value を使用して SQL フィールドを出力するのは簡単ですが、より複雑なシナリオで値に対して評価すると問題が発生する可能性があります。
次のテンプレート コードを検討してください:
<select name="y"> {{ range .SomeSlice }} <option value="{{ . }}" {{ if eq $.MyStruct.MyField.Value .}}selected="selected"{{ end }}></option> {{ end }} </select>
このコードは、$.MyStruct.MyField.Value と .. の同等性に基づいて選択された属性を設定しようとします。ただし、.MyField が Valid でない場合、エラーが発生します。
この問題には 2 つの解決策があります。
ネストされた if ステートメントを使用する
{{if $.MyStruct.MyField}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
with ディレクティブを使用する
<select name="y"> {{range $idx, $e := .SomeSlice}} <option value="{{.}}">{{with $.MyStruct.MyField}} {{if eq .Value $e}}selected="selected"{{end}} {{end}}</option> {{end}} </select>
注:
Null[Type] 構造体は非 nil であるため、Valid フィールドをチェックして、Value() が非 nil 値を返すかどうかを判断します。
{{if $.MyStruct.MyField.Valid}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
以上がスライス要素と比較するときに Golang テンプレートで Null 値を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。