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

WBOY
リリース: 2024-02-06 10:30:04
転載
620 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!