首页 > 其他分享 >GO语言的实战学习(猜谜游戏和在线词典)| 青训营笔记

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

时间:2023-02-04 18:31:08浏览次数:62  
标签:代码 guess err 猜谜 如下 Println 青训营 GO fmt

一.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)

输出效果:

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

标签:代码,guess,err,猜谜,如下,Println,青训营,GO,fmt
From: https://blog.51cto.com/u_15568258/6037250

相关文章

  • 在Python程序中操作MongoDB
    在Python程序中操作MongoDB可以通过pip安装pymongo来实现对MongoDB的操作。pipinstallpymongo进入Python交互式环境,就可以执行以下的操作。>>>frompymongoimpo......
  • Django内置权限系统源码解读
    前言之前有篇文章​​Django自定义认证系统原理及源码分析解读​​带大家分析解读了Django的认证逻辑,而且我们也知道认证是基础,认证通过之后,用户登录到系统,能看到那些,......
  • GO 并发
    简介Go语言支持并发,我们只需要通过go关键字来开启goroutine即可。goroutine是轻量级线程也有叫用户级线程,协程的,goroutine的调度是由Golang运行时进行......
  • 论文《Proximal Policy Optimization Algorithms》即PPO算法的代码及解读
    代码https://github.com/openai/lm-human-preferences在train_policy.py文件看出有一个​​ref_policy​​作为ground-truth在train_reward.py文件看出可以同时用于​......
  • mongo 日常操作
    连接到mongo1或2:1#[email protected]#mongo127.0.0.1:27017/-uroot-puex@2021查看全局所有账户:useadmindb.auth('admi......
  • Go操作elasticsearch 基础操作
    安装ES集群(Liunx版本)参考链接​​这个博主的很不错​​连接客户端//连接EsfuncconnectEs()(*elastic.Client,error){returnelastic.NewClient(//设置Elastic服......
  • 使用 Python 操作 Mongo 数据库
    1.简介MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,它支持的查......
  • ChatGPT对Google的挑战这么大么?
    微软对ChatGPT的表现,是跟好几年没闻过肉味的狼一样,铁了心要玩命的开薅,把对OpenAI的投资当成三十年来最有回报的项目。在裁员一万背景下,向OpenAI追加100亿美元投资,占股49%,同......
  • java使用tus断点续传给go-fastdfs
    1)安装go-fastdfs:可以从GitHub上获取go-fastdfs的源码,然后使用goget命令安装:gogetgithub.com/sjqzhang/go-fastdfs2)安装tus:可以从GitHub上获取tus的源码,然后使......
  • django框架之drf(部分讲解)
    一、反序列化类校验部分源码解析(了解即可)反序列化校验,什么时候,开始执行校验?视图类中的ser.is_valid(),就会执行校验,校验通过返回True,不通过返回False源码入口#......