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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一.GO语言的实战学习

1.1 前言

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

本专栏代码源码打包下载地址如下

https://download.csdn.net/download/weixin_52908342/87389481

二.猜谜游戏

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)

输出效果

image-20230117142017024

设置为只读流输出提示性文字

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)

代码效果如下

image-20230117143236170

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.上述代码效果图如下

image-20230117143755704

三.在线词典例子

以云彩小译为例

官网https://fanyi.caiyunapp.com/

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

image-20230120001423390

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

image-20230120001652531

使用生成代码器curlconverter

官网如下

https://curlconverter.com/go/

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

image-20230120001932631

主要代码如下

创建请求

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

设置请求头

image-20230120002151347

发起请求

resp, err := client.Do(req)

读取响应

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

成功输出json如图

image-20230120002355404

构造结构体

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

生成结构体

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

如下

image-20230120002753667

生成了如下巨大的结构体

image-20230120002851102

输出我们需要的信息

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

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

如下

image-20230120003232076

最后运行结果如下

image-20230120003131660

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go

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