GO语言工程实践及课后作业|青训营

102 阅读1分钟

一、猜谜游戏

首先设置一个随机种子,并利用rand.Seed方法生成随机数,这里使用随机种子的话,会导致每次生成的随机数都是不一样的。然后用reader := bufio.NewReader(os.Stdin)来创建了一个新的读取器(Reader),这个读取器会与标准输入流(os.Stdin)关联。通过这个读取器,我们可以以更高级别的方式从标准输入中读取数据。

然后使用for循环,input, err := reader.ReadString('\n') 用来读取输入数据,将输入数据与生成的随机数进行比较,如果较小/大就输出该数较小/大的提示,并重新输入,直到输入的数与生成的随机数一致为止,这样就完成了一个小小的猜谜游戏。

func main() {  
maxNum := 100  
rand.Seed(time.Now().UnixNano())  
secretNumber := rand.Intn(maxNum)  
// fmt.Println("The secret number is ", secretNumber)  
  
fmt.Println("Please input your guess")  
reader := bufio.NewReader(os.Stdin)  
for {  
input, err := reader.ReadString('\n')  
if err != nil {  
fmt.Println("An error occured while reading input. Please try again", err)  
continue  
}  
input = strings.Trim(input, "\r\n")  
  
guess, err := strconv.Atoi(input)  
if err != nil {  
fmt.Println("Invalid input. Please enter an integer value")  
continue  
}  
fmt.Println("You guess is", guess)  
if guess > secretNumber {  
fmt.Println("Your guess is bigger than the secret number. Please try again")  
} else if guess < secretNumber {  
fmt.Println("Your guess is smaller than the secret number. Please try again")  
} else {  
fmt.Println("Correct, you Legend!")  
break  
}  
}