有効なフィールドの Golang テンプレートのテスト
問題:
and template 関数を使用して Golang テンプレート内に有効なフィールドが存在する場合、いくつかの一般的な方法は失敗します。この動作は、&& 演算子とは異なり、 and が短絡評価されないために発生し、nil フィールドを値と比較しようとすると「比較対象の型が無効です」などのエラーが発生します。
解決策:
テンプレート内の と の非短絡評価のため、代替アプローチを採用する必要があります。このシナリオで使用できる 2 つの方法を次に示します。
1.ネストされた if ステートメント:
{{if $.MyStruct.MyField}} {{if eq $.MyStruct.MyField.Value .}}selected="selected"{{end}} {{end}}
このアプローチでは、外側の if ステートメントは $.MyStruct.MyField が存在するかどうかをチェックし、内側の if ステートメントはその Value が目的の値と等しいかどうかをチェックします。これにより、フィールドが nil でない場合にのみ比較が実行されることが保証されます。
2. with アクション:
<select name="y"> {{range $idx, $e := .SomeSlice}} <option value="{{.}}" {{with $.MyStruct.MyField}} {{if eq .Value $e}}selected="selected"{{end}} {{end}}>{{.}}</option> {{end}} </select>
with アクションは、ドットを指定された値に設定し、そのフィールドへのアクセスを許可します。この場合、 with アクションを使用して、比較が実行される内部スコープ内の $.MyStruct.MyField フィールドへのアクセスを提供します。
以上が短絡せずに Golang テンプレートの有効なフィールドをテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。