ホームページ  >  記事  >  バックエンド開発  >  Go リフレクション 現在のフィールド名を取得しますが、型が一致しない型指定されていない文字列でエラーが発生します

Go リフレクション 現在のフィールド名を取得しますが、型が一致しない型指定されていない文字列でエラーが発生します

WBOY
WBOY転載
2024-02-06 10:30:04597ブラウズ

Go Reflection 获取当前字段名称,但在类型不匹配的非类型字符串上出现错误

質問内容

type Issue struct {
  SysId  uuid.UUID  `json:"sysid" maelstrom:"required"`
}

func (i *Issue) Unmarshal(data []byte) error {
  err := json.Unmarshal(data, i)
  if err != nil {
    slog.Error(err.Error())
    return err
  }
  fields := reflect.ValueOf(i).Elem()
  for i := 0; i < fields.NumField(); i++ {
    maelstromTags := fields.Type().Field(i).Tag.Get("maelstrom")
    if strings.Contains(maelstromTags, "required") && fields.Field(i).IsZero() {
      return errors.New("Required field is missing." + fields.Field(i))
    }
  }
  return nil
}

上記のコードの 1 行:

リーリー

エラー メッセージに現在のフィールドの名前を含めたいと考えています。

これは私が受け取ったエラーです:

リーリー

私もこれを試してみました:

リーリー

しかし、私は理解しています:

リーリー

私もこれを試してみました:

リーリー

しかし、私は理解しています:

リーリー

誰か私に正しい方向を示したり、解決策を提供してもらえますか?ありがとう!


正解


型から StructField を取得します。 StructField から フィールド名を取得します。

リーリー

以上がGo リフレクション 現在のフィールド名を取得しますが、型が一致しない型指定されていない文字列でエラーが発生しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。