1 ... Piszę małą grę, która wymaga podania argumentu przez użytkownika w linii poleceń. Wpis w wierszu poleceń będzie wyglądał jak "go uruchom game.go 8". os.Args [0] jest uruchomionym programem (game.go), a os.Args [1] jest liczbą całkowitą wpisaną (w tym przypadku 8). Pisałem
s := os.Args[1]
maxLetters, err := strconv.Atoi(s)
if err != nil {
// handle error
fmt.Println(err)
os.Exit(2)
}
który przyjmuje ciąg „8”, zamienia go na liczbę całkowitą, a pozwala mi ustawić ją jako liczbę max w mojej grze. Mają jednak opcję nie wpisania numeru. W tym przypadku maksymalna liczba zostanie ustawiona na 7 w moim programie. Moje pytanie brzmi: jak mogę sprawdzić w golangu, czy os.Args [1] istnieje czy nie? Jeśli istnieje, ustaw maks. Na numer użytkownika. Jeśli nie istnieje, ustaw max = 7.
2 ... Podczas gry konieczne jest wprowadzenie danych przez użytkownika. "?" flag help, "(niepoprawne słowo)" powoduje, że próbują ponownie, "(poprawne słowo do odgadnięcia)" wpis daje im następne pytanie, a po prostu naciśnięcie klawisza powrotu (pusta linia) kończy grę. Aby uzyskać ich pozycję, używam:
var answer string
fmt.Scanf("%s", &answer)
Problem polega na tym, że wpis "" lub pusty wpis nie jest rozpoznawany. Naciśnięcie klawisza powrotu nie zmienia wartości odpowiedzi, dlatego odpowiedź pozostaje taka sama. , a gra kontynuuje swój poprzedni wpis jako wartość odpowiedzi. Oczywiście jest to duży problem, a wartość odpowiedzi musi się zmienić na "" lub w jakiś inny sposób po naciśnięciu klawisza Return.
Wszelkie sugestie? Dzięki za pomoc.
Got wszystko działa^_^Myślałem zrobiłem len (os.Args) wcześniej i to nie działa, ale po prostu próbował go ponownie i tym razem udało się. Dziękuję Ci. Jeśli chodzi o moje drugie pytanie, od momentu naciśnięcia klawisza Return po prostu zwracam ostatnią odpowiedź, musiałem skasować odpowiedź przed każdym wprowadzeniem przez użytkownika, aby odpowiedź = "" miała szanse na exisitng. Podobnie jak w przypadku - answer = "" fmt.Scanf ("% s", & answer). Jeśli nie odpowiedziałbym, że odpowiedź = "", odpowiedź będzie nadal dotyczyła ciągu ostatnio wprowadzonego, ignorując klucz powrotu. – user1945077