10

两个问题。

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)

获得他们的入场券。问题是无法识别“”条目或空行条目。按回车键不会改变 answer 的值,因此 answer 保持不变。,并且游戏继续以他们之前的条目作为答案值。显然这是一个大问题,并且在按下返回键时,答案值需要更改为 "" 或某种形式。

有什么建议么?谢谢你的帮助。

4

1 回答 1

14
  1. 由于您只有一个可能的选项,您可以简单地检查len(os.Args)- 如果是< 2,请使用您的默认选项。对于更复杂的情况,请查看flag包装。

  2. fmt.Scanf返回扫描项目的数量,因此请检查此项。如果为 0,则将答案设置为空字符串。

于 2013-09-24T05:14:13.000 回答