go语言实战 | 青训营

83 阅读2分钟

当我们学习完了go语言的基础语法,那么就让我们进行实战训练吧

实战项目 猜大小

项目功能:

运行之后生成一个随机数,用户可以输入数字,程序判断用户输入数字与生成数字的大小进行比较,并告诉用户猜测结果,是猜大了,猜小了还是猜对了

需要的go语言相关知识:
  1. 生成随机数
  2. if分支语句
  3. 读取用户输入以及输入结果
  4. for循环语句
开始实战
第一步 生成随机数

我们使用math包中的rand函数(当然有实力的大佬们也可以选择直接实现),设置随机种子,并生成范围内随机数字

rand.Seed(time.Now().UnixNano())  
secretNumber := rand.Intn(maxNum)
第二步 我们读取用户输入

用户的输入我们通过os.Stdin获取输入流,并将其转化为字符串,但是这里需要注意我们读取转化得到的字符串会比输入的多\r\n,这是window的换行符,在linux系统中为\n,所以我们需要去去除掉换行符并将其转化为整数

reader := bufio.NewReader(os.Stdin)  
input, err := reader.ReadString('\n')  
fmt.Println(input)  
if err != nil {  
    fmt.Printf("输入出现错误", err)  
    return  
}  
input = strings.TrimSuffix(input, "\n")  
input = strings.TrimSuffix(input, "\r")  
guess, err := strconv.Atoi(input)
第三步 将用户输入与生成随机数进行比较

这里我们就需要用到之前学的go语言语法中的if语句了,对用户输入和生成随机数进行判断大小,并将结果输出到控制台上

if guess > secretNumber {  
fmt.Printf("输入过大,请重新输入")  
} else if guess < secretNumber {  
fmt.Printf("输入过小,请重新输入")  
} else {  
fmt.Printf("猜测正确")  
}
第四步 当用户猜错后进行再次猜测

当用户猜错后我们需要让用户再次进行猜测 直到用户猜对停止 这时候我们需要使用for的无限循环以及break退出循环

for {  
input, err := reader.ReadString('\n')  
fmt.Println(input)  
if err != nil {  
fmt.Printf("输入出现错误", err)  
return  
}  
input = strings.TrimSuffix(input, "\n")  
input = strings.TrimSuffix(input, "\r")  
guess, err := strconv.Atoi(input)  
  
if err != nil {  
fmt.Printf("输入出现错误", err)  
return  
}  
if guess > secretNumber {  
fmt.Printf("输入过大,请重新输入")  
} else if guess < secretNumber {  
fmt.Printf("输入过小,请重新输入")  
} else {  
fmt.Printf("猜测正确")  
break  
}  
}

总结

总体来说,这个项目比较的简单,可以练习go语言相关语法,大家快去试试吧