# panic: 标志重复定义：-verbose

- **ID:** `go/flag-redefined-panic`
- **领域:** go
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

使用已在同一 flag.CommandLine 集合中注册的标志名称调用 flag.String、flag.Int 或类似函数。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| go1.20 | active | — | — |
| go1.21 | active | — | — |
| go1.22 | active | — | — |
| go1.23 | active | — | — |

## 解决方案

1. ```
   Ensure each flag name is unique across the entire program: use descriptive prefixes like `-server-port` and `-client-port` instead of just `-port`.
   ```
2. ```
   Use separate flag sets for different packages and parse each set independently: `fs := flag.NewFlagSet("myapp", flag.ExitOnError); fs.String("verbose", "", "desc")`
   ```

## 无效尝试

- **** — The default set is still used; panics persist unless all flags are on a custom set. (70% 失败率)
- **** — The flag name string is what matters; variable name change doesn't affect registration. (80% 失败率)
