GO语言的实战学习(猜谜游戏和在线词典)| 青训营笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言的实战学习(猜谜游戏和在线词典)| 青训营笔记相关的知识,希望对你有一定的参考价值。

一.GO语言的实战学习

1.1 前言

在上文我们急速学习了Go语言的入门,今天我们来学习一下Go语言的实战

二.猜谜游戏

1.导入依赖包:"math/rand",代码如下:

import (
   "fmt"
   "math/rand"
)

2.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.先导入依赖包,代码如下:

import (
   "bufio"
   "fmt"
   "math/rand"
   "os"
   "strconv"
   "strings"
   "time"
)

4.在刚刚代码外面加一个for 循环,实现用户可以循环输入猜数字的效果:

for 

5.对用户输入的值和随机数进行比较,并且对其大小进行一个友好的提示,如果相等,就输出才对了,执行break,结束大循环。退出本次游戏。

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

6.上述代码效果图如下:

三.在线词典例子

以云彩小译为例:

我们到这个网站里,点击翻译,去网络里查看,找到dict,找到请求方法为Post的。注意,必须为post请求。

我们找到刚刚的dict,点击右键,赋值为cURL:

使用生成代码器:curlconverter

官网如下:

粘贴上面复制的内容,然后将下面生成的go语言代码copy带编译器里:

主要代码如下:

创建请求:

req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)

设置请求头:

发起请求:

resp, err := client.Do(req)

读取响应:

bodyText, err := ioutil.ReadAll(resp.Body)

成功输出json,如图:

构造结构体:

type DictRequest struct 
   TransType string `json:"trans_type"`
   Source    string `json:"source"`
   UserID    string `json:"user_id"`

生成结构体:

我们上面输出了应该json字符串,我们复制到OKTools工具里。

如下:

生成了如下巨大的结构体:

输出我们需要的信息:

fmt.Println(word, "UK:", dictResponse.Dictionary.Prons.En, "US:", dictResponse.Dictionary.Prons.EnUs)
for _, item := range dictResponse.Dictionary.Explanations 
   fmt.Println(item)

代码完善,将Source:后面写为变量,然后在主函数里在终端输入变量,为输入的字符串,然后返回api处理之后的结果:

如下:

最后运行结果如下:

以上是关于GO语言的实战学习(猜谜游戏和在线词典)| 青训营笔记的主要内容,如果未能解决你的问题,请参考以下文章

Go语言上手 | 青训营笔记

对于Go 语言的进阶与依赖管理| 青训营笔记

前端语言串讲 | 青训营笔记

字节青训营-后端练习题-编程题1(36进制加法)

字节青训营-后端练习题-选择题

青训营月影老师告诉我写好JavaScript的三大原则之——各司其责