1 ... Sto scrivendo un piccolo gioco che richiede un argomento che deve essere fornito dall'utente sulla riga di comando. La riga di comando dovrebbe apparire come "go run game.go 8". os.Args [0] è il programma eseguito (game.go), e os.Args [1] è il numero intero inserito (in questo caso 8). Ho scritto
s := os.Args[1]
maxLetters, err := strconv.Atoi(s)
if err != nil {
// handle error
fmt.Println(err)
os.Exit(2)
}
che prende la stringa '8', lo converte in un numero intero, e mi permette di impostarlo come un numero massimo nel mio gioco. Tuttavia, hanno la possibilità di non inserire un numero. In questo caso il numero massimo diventa predefinito a 7 nel mio programma. La mia domanda è come posso controllare in golang se os.Args [1] esiste o no? Se esiste, imposta max al numero dell'utente. Se non esiste, imposta max = 7.
2 ... Durante il gioco, è necessario l'inserimento dell'utente. "?" le bandiere aiutano, "(errata parola supposizione)" la voce fa provare di nuovo, "la voce corretta (supposizione corretta)" dà loro la prossima domanda, e semplicemente premendo il tasto di ritorno (una riga vuota) esce dal gioco. Io uso
var answer string
fmt.Scanf("%s", &answer)
Per ottenere il loro ingresso. Il problema è la "" voce, o la riga vuota, non è riconosciuta. Premendo il tasto Invio non cambia il valore della risposta, quindi la risposta rimane la stessa. e il gioco procede con la loro voce precedente ancora come valore di risposta. Ovviamente questo è un grosso problema e il valore della risposta deve cambiare in "" o in qualche modo dopo aver premuto il tasto Invio.
Qualche suggerimento? Grazie per qualsiasi aiuto.
Ha funzionato tutto^_^Pensavo di aver fatto len (os.Args) in precedenza e non funzionava, ma l'ho appena provato e questa volta ha funzionato. Grazie. Per quanto riguarda la mia seconda domanda, dal momento che il tasto invio ha restituito solo l'ultima risposta, ho dovuto cancellare la risposta prima di ogni input dell'utente in modo che answer = "" potesse avere una possibilità di esisitare. Like so - answer = "" fmt.Scanf ("% s", e risposta). Se non avessi risposto answer = "", la risposta sarebbe valida per la stringa inserita in precedenza, ignorando la chiave di ritorno. – user1945077