在本次青训营中,接触了之前没有接触的Go语言。希望我在结营之前能基本掌握Go。
概述本文目标:
- 通过第一个小案例GuessNumber 巩固Go语言的基础语法
- 熟悉使用豆包MarsCode的“AI练中学”附带的云端编辑器功能
- 熟悉使用豆包MarsCode的AI功能
一、Go语言的main和import
首先介绍Go语言的main包和main函数,
通过豆包MarsCode中AI的解释,可以快速了解为什么Go语言需要定义main函数文件所在的包为main包
同时可以看到,Go语言通过import()导入各种包
二、通过小案例GuessNumber巩固Go语言的基础语法
思路分析:
- 生成随机数:首先,程序需要生成一个随机数作为要猜测的数字。这个数字应该在一个指定的范围内,比如1到100。
- 获取用户输入:程序需要提示用户输入他们的猜测,并读取用户的输入。
- 验证用户输入:程序需要检查用户的输入是否是一个有效的数字。如果输入无效(例如,用户输入了一个字母而不是数字),程序应该提示用户重新输入。
- 比较用户猜测和随机数:程序需要比较用户的猜测和生成的随机数。如果用户的猜测大于随机数,程序应该提示用户他们的猜测太大了;如果用户的猜测小于随机数,程序应该提示用户他们的猜测太小了。
- 重复步骤2到4,直到用户猜对:程序应该不断重复步骤2到4,直到用户猜对了随机数。
- 结束游戏并显示结果:当用户猜对了随机数,程序应该结束游戏并显示用户猜对了。
1.生成随机数
通过内置的math/rand包产生随机数,:=表示声明且赋值,只能使用一次,全局变量不能使用。
maxNum := 100
secretNum := rand.Intn(maxNum)
2.获取用户输入
bufio 是 Go 语言标准库中的一个包,它提供了带缓冲的 I/O 操作。这意味着它可以更高效地处理输入和输出,特别是在处理文件或网络连接时。bufio 包中的 Reader 和 Writer 类型是最常用的,它们分别用于读取和写入数据。
reader := bufio.NewReader(os.Stdin)
...
input, err := reader.ReadString('\n')
input = strings.Trim(input, "\t\n")
guess, err := strconv.Atoi(input)
reader := bufio.NewReader(os.Stdin) 这行代码创建了一个 bufio.Reader 类型的对象 reader,它使用标准输入 os.Stdin 作为输入源。bufio.NewReader 函数是 Go 标准库中 bufio 包提供的一个函数,用于创建一个带缓冲区的读取器,它可以更高效地从输入源读取数据。
在游戏的主循环中,reader.ReadString('\n') 被用来读取用户输入的一行文本input,直到遇到换行符为止。
strings.Trim()和strconv.Atoi()除首尾的空白字符、转换为整数
3.验证用户输入
Go语言的null使用nil表示
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
fmt.Println("You guess is", guess)
4.比较用户猜测和随机数
了解Go语言的if else语句,和C和Java基本类似,不同之处是不用使用()包裹条件语句
if guess > secretNum {
fmt.Println("大了")
} else if guess < secretNum {
fmt.Println("小了")
} else {
fmt.Println("Correct, you Legend!")
break
}