这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
一、完整代码
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("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)
// return
continue
}
input = strings.TrimSuffix(input, "\r\n") //多了一个换行符,去掉换行符
guess, err := strconv.Atoi(input) //转换成数字
if err != nil {
fmt.Println("Invalid input.Please enter an integer value")
//return //错误的话 退出进程
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//猜对即退出
}
}
}
二、用fmt.Scanf 来简化代码实现
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("Please input your guess")
for{
var guess int
_, err := fmt.Scanf("%d", &guess)
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//猜对即退出
}
}
}
三、运行结果
四、思考
go语言的基本语法 (纯go语言小白,第一次写,这么简单的猜数字游戏,对我来说也很难!) 所以写下来的感受就是,抽时间一定把go语法去学一下,这课程默认我是会的,真的是太难受了,周六周日忙了两天,让我真的心累。话又说回来,真的觉得收获蛮多的,特别另外两个作业,实现在线小词典和那个两个翻译引擎的并行。知道了很多转换格式的网站,还有会配置开发环境,并且对电脑的操作更加熟练了!我会再接再厉的,剩下在线词典和实现并行提高速度的笔记明天再写,今天的课还没看,加油吧!