Go 语言入门实践一:基础语法和常用特性解析 | 豆包MarsCode AI 刷题

129 阅读3分钟

在本次青训营中,接触了之前没有接触的Go语言。希望我在结营之前能基本掌握Go。

概述本文目标:

  1. 通过第一个小案例GuessNumber 巩固Go语言的基础语法
  2. 熟悉使用豆包MarsCode的“AI练中学”附带的云端编辑器功能
  3. 熟悉使用豆包MarsCode的AI功能

一、Go语言的main和import

首先介绍Go语言的main包和main函数,

image.png

通过豆包MarsCode中AI的解释,可以快速了解为什么Go语言需要定义main函数文件所在的包为main包

image.png

所以不像其他语言只需要main函数作为执行入口,Go语言的可执行程序入口点不仅需要main函数,同时需要将其包含在main包之中。

同时可以看到,Go语言通过import()导入各种包

二、通过小案例GuessNumber巩固Go语言的基础语法

思路分析:

  1. 生成随机数:首先,程序需要生成一个随机数作为要猜测的数字。这个数字应该在一个指定的范围内,比如1到100。
  2. 获取用户输入:程序需要提示用户输入他们的猜测,并读取用户的输入。
  3. 验证用户输入:程序需要检查用户的输入是否是一个有效的数字。如果输入无效(例如,用户输入了一个字母而不是数字),程序应该提示用户重新输入。
  4. 比较用户猜测和随机数:程序需要比较用户的猜测和生成的随机数。如果用户的猜测大于随机数,程序应该提示用户他们的猜测太大了;如果用户的猜测小于随机数,程序应该提示用户他们的猜测太小了。
  5. 重复步骤2到4,直到用户猜对:程序应该不断重复步骤2到4,直到用户猜对了随机数。
  6. 结束游戏并显示结果:当用户猜对了随机数,程序应该结束游戏并显示用户猜对了。

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
		}