2つの質問。Golang - 引数の数を確認しますか?ユーザー入力 - 戻りキー(空白行)の入力を確認する ""
1 ...私はコマンドラインでユーザーが提供する引数を必要とする小さなゲームを書いています。コマンドライン入力は "go run game.go 8"のようになります。 os.Args [0]はプログラム実行(game.go)で、os.Args [1]は入力された整数です(この場合は8)。私は、文字列を「8」取る整数に変換し、そして私は私のゲームで最大数として設定することができます
s := os.Args[1]
maxLetters, err := strconv.Atoi(s)
if err != nil {
// handle error
fmt.Println(err)
os.Exit(2)
}
を書きました。ただし、番号を入力しないこともできます。この場合、プログラムの最大数はデフォルトで7になります。私の質問は、os.Args [1]が存在するかどうかをgolangで調べる方法です。存在する場合は、ユーザーの番号にmaxを設定します。存在しない場合は、max = 7と設定してください。
2 ...ゲーム中にユーザーの入力が必要です。 "?"フラグの助けを借りて、 "(間違った推測単語)"のエントリは、それらを再び試してみる "正しい推測単語"のエントリは、それらに次の質問を与え、単純に戻りキー(空白行)を押すと、ゲームを終了します。私は使用します
var answer string
fmt.Scanf("%s", &answer)
彼らのエントリを取得します。問題は、エントリまたは空白行のエントリが認識されないことです。リターンキーを押しても答えの値は変わらないので、答えは変わりません。ゲームはその前の入力を回答値として依然として進行する。明らかにこれは大きな問題であり、返答キーを押すと回答値を何らかの種類に変更する必要があります。
提案がありますか?助けてくれてありがとう。
私は以前にlen(os.Args)を行っていたと思っていましたが、動作しませんでしたが、もう一度試してみました。ありがとうございました。私の2番目の質問では、リターンキーを押すだけで最後の答えが返されるので、すべてのユーザー入力の前に解答をクリアして、answer = ""が出てくるようにしなければなりませんでした。 so - answer = "" fmt.Scanf( "%s"、&answer)のように。私がanswer = ""を表明しなかった場合、答えは戻りキーを無視して、前に入力した文字列を表します。 – user1945077