两个问题。
1 ...我正在编写一个小游戏,需要用户在命令行上提供参数。命令行条目看起来像“go run game.go 8”。 os.Args [0]是程序运行(game.go),os.Args [1]是输入的整数(在本例中为8)。我写了
s := os.Args[1]
maxLetters, err := strconv.Atoi(s)
if err != nil {
// handle error
fmt.Println(err)
os.Exit(2)
}
使用字符串'8',将其转换为整数,并允许我将其设置为游戏中的最大数字。但是,他们可以选择不输入数字。在这种情况下,我的程序中最大数量默认为7。我的问题是如果os.Args [1]存在与否,我如何检查golang?如果存在,请将max设置为用户的号码。如果它不存在,请设置max = 7.
2 ...在游戏过程中,需要有用户输入。 “?”标志帮助,“(不正确的猜词)”条目使他们再次尝试,“(正确的猜词)”条目给他们下一个问题,只需点击返回键(空行)退出游戏。我用
var answer string
fmt.Scanf("%s", &answer)
获取他们的参赛作品。问题是无法识别“”条目或空行条目。点击返回键不会改变答案的值,因此答案保持不变。 ,游戏继续他们之前的输入作为答案值。显然这是一个大问题,答案值需要在返回键时改为“”或某种类型。
有什么建议吗?谢谢你的帮助。
答案 0 :(得分:8)
由于您只有一个可能的选项,因此您只需检查len(os.Args)
- 如果是< 2
,请使用默认选项。对于更复杂的情况,请查看flag
包。
fmt.Scanf
会返回已扫描的项目数,因此请检查此项。如果为0,则将答案设置为空字符串。