实战案例|青训营

150 阅读1分钟

Go语言的实战案例(上)

猜谜游戏

package main
import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

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
		}
	}
}

  1. maxNum := 100:设置最大数字为100,即秘密数字的范围为0到99。
  2. rand.Seed(time.Now().UnixNano()):使用当前时间的纳秒数作为随机数生成器的种子,确保每次运行程序时生成的随机数不同。
  3. secretNumber := rand.Intn(maxNum):使用rand.Intn方法生成一个0到maxNum-1之间的随机数作为秘密数字。
  4. fmt.Println("The secret number is", secretNumber):打印秘密数字。
  5. fmt.Println("Please input your guess"):打印提示用户输入猜测数字的消息。
  6. reader := bufio.NewReader(os.Stdin):创建一个读取器用于从命令行接收输入。
  7. input, err := reader.ReadString('\n'):从命令行读取输入,并保存到input变量中。’\n’表示读取到换行符为止。
  8. if err != nil { ... }:如果读取过程中发生错误,打印错误信息并返回。
  9. input = strings.Trim(input, "\r\n"):使用strings.Trim函数去除input字符串中的回车符和换行符。
  10. guess, err := strconv.Atoi(input):将去除换行符后的input字符串转换为整数,保存到guess变量中。
  11. if err != nil { ... }:如果转换过程中发生错误,打印错误信息并返回。
  12. fmt.Println("You guess is", guess):打印用户猜测的数字。
  13. if guess > secretNumber { ... }:如果猜测的数字大于秘密数字,打印提示信息让用户再次尝试。
  14. else if guess < secretNumber { ... }:如果猜测的数字小于秘密数字,打印提示信息让用户再次尝试。
  15. else { ... }:如果猜测的数字等于秘密数字,打印猜测正确的信息。

总结

这段代码实现了一个简单的猜数字游戏。它通过随机数生成一个秘密数字,并通过循环结构和用户输入来判断猜测的数字与秘密数字的关系。根据猜测结果,程序会提示用户继续猜测,直到猜中为止。这个代码可以帮助初学者理解随机数生成、循环结构和用户输入的基本用法。