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 }
在上面的代码中,一行:
return errors.New("Required field is missing." + fields.Field(i))
我想在错误消息中包含当前字段的名称。
这是我收到的错误:
<code> invalid operation: "Required field is missing." + fields.Field(i) (mismatched types untyped string and reflect.Value) </code>
我也尝试过这个:
return errors.New("Required field is missing." + fields.Field(i).String)
但我明白了:
<code> invalid operation: "Required field is missing." + fields.Field(i).String (mismatched types untyped string and func() string) </code>
我也尝试过这个:
return errors.New("Required field is missing." + string(fields.Field(i)))
但我明白了:
<code> cannot convert fields.Field(i) (value of type reflect.Value) to type string [InvalidConversion] </code>
有人能给我指出正确的方向或提供解决方案吗?谢谢!
从类型中获取StructField。从 StructField 获取字段名称。
return fmt.Errorf("required field is missing: %s", fields.Type().Field(i).Name)
Das obige ist der detaillierte Inhalt vonGo Reflection Aktuellen Feldnamen abrufen, aber Fehler bei untypisierter Zeichenfolge mit nicht übereinstimmenden Typen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!