# flag: -flag 需要一个参数：-value

- **ID:** `go/flag-parse-unexpected-value`
- **领域:** go
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 88%

## 根因

一个布尔标志或期望值的标志后面跟着另一个标志而没有值分隔符，导致下一个标志被解释为值。

## 版本兼容性

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

## 解决方案

1. ```
   在空格后提供值：-flag value，或使用 =：-flag=value。确保标志类型匹配（例如 int、string）。
   ```
2. ```
   如果标志应为布尔型，将其定义为 bool 且不传递值：flag.Bool("flag", false, "usage")
   ```

## 无效尝试

- **Adding = between flag and value: -flag=value** — This works for flags expecting values, but if the flag is defined as bool, it still fails because bool flags don't take values. (40% 失败率)
- **Using double dashes --flag value** — Go's flag package treats -- as prefix for long flags; it doesn't change the parsing behavior for value requirement. (60% 失败率)
