月关宝盒
没有内置方法/函数可以执行此操作。中的现有FieldBy*方法reflect是作为循环实现的(参见`src/reflect/type.go)。您还可以编写一个循环来实现此处所需的功能。一种方法可能是这样的:func fieldByTag(s interface{}, tagKey, tagValue string) (reflect.StructField, bool) { rt := reflect.TypeOf(s) for i := 0; i < rt.NumField(); i++ { field := rt.Field(i) if field.Tag.Get(tagKey) == tagValue { return field, true } } return reflect.StructField{}, false}请注意,tagKey和tagValue是单独传递的,因为这就是reflect.StructField工作原理。所以在你的情况下你会这样称呼它:field, ok := fieldByTag(&ns, "json", "name")