in pkg/cloud/api/metafields.go [29:44]
func newMetafieldAccessor(v reflect.Value) (*metafieldAccessor, error) {
if v.Type().Kind() != reflect.Struct {
return nil, fmt.Errorf("invalid type: %s", v.Type())
}
ret := &metafieldAccessor{}
if t, ok := v.Type().FieldByName(nullFieldsName); ok && t.Type.Kind() == reflect.Slice && t.Type.Elem().Kind() == reflect.String {
ret.nullFields = v.FieldByName(nullFieldsName)
}
if t, ok := v.Type().FieldByName(forceSendFieldsName); ok && t.Type.Kind() == reflect.Slice && t.Type.Elem().Kind() == reflect.String {
ret.forceSendFields = v.FieldByName(forceSendFieldsName)
}
if !ret.nullFields.IsValid() || !ret.forceSendFields.IsValid() {
return nil, fmt.Errorf("struct does not have NullField or ForceSendFields")
}
return ret, nil
}