# proto：（field mask）：无效路径 "user..name"

- **ID:** `go/proto-field-mask-path-invalid`
- **领域:** go
- **类别:** data_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

fieldmaskpb 验证拒绝了包含空段或消息描述符中不存在的字段名的路径。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| google.golang.org/protobuf v1.31+ | active | — | — |

## 解决方案

1. **** (92% 成功率)
   ```
   fm := &fieldmaskpb.FieldMask{Paths: []string{"user.name", "user.email"}}
fm.Normalize()
if !fm.IsValid(msg) {
    return nil, status.Error(codes.InvalidArgument, "invalid field mask")
}
   ```
2. **** (85% 成功率)
   ```
   md := msg.ProtoReflect().Descriptor()
for _, p := range fm.Paths {
    if !fieldMaskPathExists(md, p) {
        return nil, fmt.Errorf("unknown field: %s", p)
    }
}
   ```

## 无效尝试

- **** — Silently changes semantics; the Update RPC will apply the wrong field mask. (80% 失败率)
- **** — Loses protobuf descriptor validation and interop with other gRPC clients. (75% 失败率)
