0
struct
を受け取り、指定されたフィールドにゼロ以外の値があることを確認する汎用関数を作成しようとしています。Goで構造体フィールドが0以外であることを確認
は、これは私の関数である:
func CheckRequiredFields(kind string, i interface{}, fields ...string) error {
for _, field := range fields {
value := reflect.ValueOf(i).FieldByName(field)
if value.Interface() == reflect.Zero(value.Type()).Interface() {
return fmt.Errorf("missing required %s field %s", kind, field)
}
}
return nil
}
とstruct
がi
として渡された場合、それはうまく動作しますが、i
がstruct
へのポインタである場合には失敗しました。
渡された値がポインタの場合、インターフェイスの値をどのように反映できますか?
ありがとう、私はそれがそういうものだと思った。 – Ralph