Hai câu hỏi.Golang - Kiểm tra số lượng đối số? Đồng thời Nhập Người dùng - Kiểm tra mục nhập trở về (dòng trống) ""
1 ... Tôi đang viết một trò chơi nhỏ yêu cầu đối số được cung cấp bởi người dùng trên dòng lệnh. Mục dòng lệnh sẽ giống như "go run game.go 8". os.Args [0] là chương trình chạy (game.go) và os.Args [1] là số nguyên được nhập (trong trường hợp này là 8). Tôi đã viết
s := os.Args[1]
maxLetters, err := strconv.Atoi(s)
if err != nil {
// handle error
fmt.Println(err)
os.Exit(2)
}
Bắt chuỗi '8', chuyển đổi thành số nguyên và cho phép tôi đặt số đó là số tối đa trong trò chơi của mình. Tuy nhiên, họ có tùy chọn không nhập số. Trong trường hợp này, số tối đa được mặc định là 7 trong chương trình của tôi. Câu hỏi của tôi là làm thế nào để kiểm tra golang nếu os.Args [1] tồn tại hay không? Nếu nó tồn tại, hãy đặt tối đa số của người dùng. Nếu nó không tồn tại, hãy đặt max = 7.
2 ... Trong trò chơi, cần phải có đầu vào của người dùng. "?" cờ giúp, "(đoán từ không chính xác)" mục làm cho họ thử lại, "(đúng đoán từ)" nhập cho họ câu hỏi tiếp theo, và chỉ cần nhấn phím trở lại (một dòng trống) thoát khỏi trò chơi. Tôi sử dụng
var answer string
fmt.Scanf("%s", &answer)
Để có được mục nhập của họ. Vấn đề là mục nhập "" hoặc mục nhập dòng trống không được nhận dạng. Việc nhấn phím trả về không thay đổi giá trị của câu trả lời, do đó câu trả lời vẫn giữ nguyên. và trò chơi tiếp tục với mục nhập trước đó của họ vẫn là giá trị câu trả lời. Rõ ràng đây là một vấn đề lớn và giá trị câu trả lời cần phải thay đổi thành "" hoặc một số sắp xếp khi nhấn phím trả về.
Mọi đề xuất? Cảm ơn vì bất kì sự giúp đỡ.
Có mọi thứ đang hoạt động^_^Tôi nghĩ tôi đã làm len (os.Args) trước đây và nó không hoạt động, nhưng tôi đã thử lại lần nữa và lần này nó hoạt động. Cảm ơn bạn. Theo như câu hỏi thứ hai của tôi, kể từ khi nhấn phím return chỉ trả về câu trả lời cuối cùng, tôi phải xóa câu trả lời trước khi mọi người dùng nhập vào để câu trả lời = "" có cơ hội xuất hiện. Giống như vậy - answer = "" fmt.Scanf ("% s", & answer). Nếu tôi không xác nhận câu trả lời = "", câu trả lời sẽ vẫn giữ nguyên cho chuỗi cuối cùng được nhập trước đó, bỏ qua khóa trả về. – user1945077