这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
猜数游戏: 电脑随机生成一个数字,玩家输入一个数来猜电脑随机生成的数字,猜错后会提示输入的数字比随机数是大还是小。 课上的最终代码为 `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.TrimSuffix(input, "\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
}
}
}
`
作业的代码: `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)
\
fmt.Println("Please input your guess")
\
//reader := bufio.NewReader(os.Stdin)
for {
var guess int
_, err := fmt.Scanf("%d", &guess)
\
//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
}
}
}
`
该问题的思路是: 先创建一个变量secretNumber用来存储随机数,创建一个死循环,里面再创建一个变量读取用户输入的数据,用if语句判断用户输入的数和随机数的关系(>、<、=),如果不等于就退出本次循环,进行下一次输入。
课上的代码读取比较繁琐,直接用fmt.Scanf()代码会更加简洁
翻译: 先用浏览器的开发者工具抓取翻译时的数据包,然后复制C_url,将c_url转为go代码,再将请求和响应的json转为go代码,通过一系列判断输出。