Go 语言实战案例01 | 青训营

80 阅读1分钟

3.1猜谜游戏

3.1.2 生成随机数v2

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	maxNum := 100
	rand.Seed(time.Now().UnixNano())
	secretNumber := rand.Intn(maxNum)
	fmt.Println("The secret number is ", secretNumber)
}

3.1.3 读取用户输入

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)    //转成 只读 流
	input, err := reader.ReadString('\n')  //读取一行输入
	if err != nil {
		fmt.Println("An error occured while reading input. Please try again", err)
		return
	}
	input = strings.Trim(input, "\r\n")    //去掉换行符

	guess, err := strconv.Atoi(input)      //转换成数字
	if err != nil {                        //转换失败,则打印错误信息
		fmt.Println("Invalid input. Please enter an integer value")
		return
	}
	fmt.Println("You guess is", guess)
}

3.1.4 实现判断逻辑

image.png

3.1.5 实现游戏循环

image.png

3.2 在线词典介绍

这个实例中我们将学习:

如何用Go语言发送http请求、解析JSON,还会学习如何使用代码生成提高效率;

3.2.1 抓包

image.png

image.png

3.2.1 代码生成

想办法在Go里面发送这个请求!

image.png 有几个Header比较复杂 转义导致的编译错误 image.png

3.2.2 生成代码解读

转换成流 异常 ;

defer手动关闭流 defer会在函数结束之后 从下往上触发 防止泄露

image.png

image.png

3.2.3 生成request body

image.png

3.2.4 解析response body

点击“转换-嵌套” 生成的代码会紧凑一点 image.png

image.png

3.2.5 打印结果

image.png

3.2.6 完善代码

image.png

image.png