首页 > 其他分享 >Go实战篇 1

Go实战篇 1

时间:2023-12-22 18:31:51浏览次数:33  
标签:rand 实战篇 err JavaScript JSON 随机数 Go input

猜谜游戏

游戏通过程序生成一个随机数让玩家进行猜测,玩家输入一个数字后,程序给出提示:该数字是大于还是小于随机数,直至玩家猜对为止,退出程序。

如何获得随机数?

在Go中,使用 math/rand 包中的函数生成随机数,如下:

func main() {
	maxNum := 100	// 用于指定随机数的上界
	rand.Seed(time.Now().UnixNano())	// 使用Unix时间戳来初始化随机数的种子
	secretNumber := rand.Intn(maxNum)	// 调用Intn函数,生成一个随机数并存储在secretNumber中
	fmt.Println("The secret number is ", secretNumber)
}

但是在go1.20中 rand.Seed() 已经弃用,可以采用 rand.New(rand.NewSource()) 来实现获取随机数

rand.New(rand.NewSource(time.Now().UnixNano()))

如何从键盘接收用户的输入?

我们引入 "bufo","os""strconv","strings" 包,输入流 stdin文件 可以使用 os.Stdin 来得到,通过转换成 reader 变量更易于操作,使用 ReadString() 来读取一行,但是我们最终需要的是一个数字,所以我们还需要去掉 \n

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.Scanf("%d", &guess) 来实现读取输入

_, err := fmt.Scanf("%d", &guess)

JSON是JavaScript Object Notation的缩写,一种轻量级的数据交换格式。JSON通常用于在服务器和网页之间发送数据,它具有“自描述性”,易于理解[。JSON格式与创建JavaScript对象的代码语法相同,因此JavaScript程序可以轻松地将JSON数据转换为本地JavaScript对象。JSON语法源自JavaScript对象表示法语法,但JSON格式仅为文本。可以使用任何编程语言编写读取和生成JSON数据的代码

[JSON数据以名称/值对的形式编写,就像JavaScript对象属性一样。名称/值对由字段名称(用双引号括起来),后跟冒号,然后是值组成:"firstName": "John"。JSON名称需要双引号,而JavaScript名称则不需要。

在线词典

根据输入的单词来给出相应的音标和注释,调用第三方的API来查询单词

彩云翻译

从网页中获取API地址

  1. 通过F12或者鼠标右键->检查进入开发者工具,点击 network
  2. 如本例,在文本框输入一个单词,并在点击翻译后,观察 network 标签页下记录的网络请求。
  3. General下的Request URL便是我们需要的API地址。
  4. 右键 copy as cURL

![](D:\All sorts of files\Files\LearningNote\Profession\Golang\Pictures\API_get.png)

curl 'https://lingocloud.caiyunapp.com/v1/dict' \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: application/json;charset=UTF-8' \
  -H 'Cookie: _gcl_au=1.1.255116589.1691824274; _gid=GA1.2.1701381937.1691824274; _ga_65TZCJSDBD=GS1.1.1691824273.1.1.1691825833.0.0.0; _ga_R9YPR75N68=GS1.1.1691824273.1.1.1691825833.59.0.0; _ga=GA1.2.599597692.1691824274; _gat_gtag_UA_185151443_2=1' \
  -H 'Origin: https://fanyi.caiyunapp.com' \
  -H 'Referer: https://fanyi.caiyunapp.com/' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: cors' \
  -H 'Sec-Fetch-Site: same-site' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.200' \
  -H 'X-Authorization: token:qgemv4jr1y38jyq6vhvi' \
  -H 'app-name: xy' \
  -H 'device-id: 2a208a2d2e62d151bf2a0d125a770410' \
  -H 'os-type: web' \
  -H 'os-version;' \
  -H 'sec-ch-ua: "Not/A)Brand";v="99", "Microsoft Edge";v="115", "Chromium";v="115"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  --data-raw '{"trans_type":"en2zh","source":"awsom"}' \
  --compressed

使用Convert curl to Go (curlconverter.com)将curl转换成Golang

{
  "rc": 0,
  "wiki": {},
  "dictionary": {}
}

点击 preview ,右键-> copy value,使用JSON转Golang Struct - 在线工具 - OKTools,将json转换成Golang Struct

标签:rand,实战篇,err,JavaScript,JSON,随机数,Go,input
From: https://blog.51cto.com/LowellHere/8937722

相关文章

  • How to Master the Popular DBSCAN Clustering Algorithm for Machine Learning
    OverviewDBSCANclusteringisanunderratedyetsuperusefulclusteringalgorithmforunsupervisedlearningproblemsLearnhowDBSCANclusteringworks,whyyoushouldlearnit,andhowtoimplementDBSCANclusteringinPythonIntroductionMasteringunsu......
  • config-cloudflare-argo-guide
    title:CloudflareArgo配置指北date:2021-11-2113:43:59author:TokisakiGalaxyexcerpt:tags:-Linux-cloudflare-Argocategories:踩坑记录设置别名sudonano/etc/bashrcaliascf=cloudflaredLinux安装为服务sudonano/etc/cloudflared/config.ymltun......
  • Go 爬虫在大规模数据抓取中的性能如何
    随着互联网的发展,数据已经成为一种非常重要的资源。因此,大规模数据抓取已经成为了很多公司和组织的常见需求。在这个过程中,爬虫技术无疑是一个非常强大的工具,而Go语言作为一门高效的编程语言,也被广泛应用于爬虫程序的开发中。本文将探讨Go爬虫在大规模数据抓取中的性能。Go语言的性......
  • bat批处理 call 和 goto 调用
    前言全局说明bat批处理call和goto调用一、bat批处理call和goto调用@echooffSETval="XXXXX"SETval=""SETval=%val:~1,-1%call:EmptyTest%val%goto:eof:EmptyTestif"%1"==""(echoEmpyt!!!)call:EmptyTest%val%......
  • [转载]使用GoEasy在uniapp下实现实时音视频通话附关键代码
    GRTC(GoEasyReal-TimeCommunication)是GoEasy推出的新功能,用于协助开发者在uniapp下轻松实现一对一和多人场景下的实时音视频通话功能。集成步骤1.配置云厂商音视频服务GRTC功能依赖于云厂商的音视频服务,目前已集成七牛云音视频服务(每月免费5000分钟),并计划未来支持更多云厂......
  • golang中的fs.ReadDir
    平时习惯了./和../作为访问目录的路径,但今天使用golang中fs.ReadDir这个函数的时候发现这个习惯是不正确的。但是常用的命令并没有分很清楚.和./在这几个命令中使用.或./都可以到达目录下lscd错误示范packagemainimport( "fmt" "io/fs" "os")funcmain(){ fsf......
  • 小徐先生的GORM使用教程
    小徐先生1212的Gorm教程前言记录学习过程用来自微信公众号小徐先生的编程时间微信公众号同名.数据库gorm中的核心就是*gorm.DB这个实例的链式调用.因此创建db实例的过程分为三步:设置好连接mysql的dsn(datasourcename)通过gorm.Config完成db有关的自定义配置......
  • mongoDB-使用总结($group 、$unwind、$cond等)
    1.按年分库表联合查询db.collection_2023_3.aggregate({$set:{_id:'2023_3'}},{$unionWith:{coll:'collection_2023_4',pipeline:[{$set:{_id:"2023_4"}}]}}) 2.多字段分组{$group:{_id:{data_time:......
  • mongoDB取日周月年
    1.$dateFromString字符串转时间类型{$dateFromString:{dateString:<dateStringExpression>,  //要转化的时间字符串format:<formatExpression>,  //转换的格式,’%Y-%m-%dT%H:%M:%S.%LZ‘   timezone:<tzExpression>,  //指定时区onError:<......
  • django 如何在apps目录创建应用
    django-adminstartapp命令创建应用时,默认保存在当前目录, 不过可以带一个路径参数先查看一下帮助信息django-adminstartapp-husage:django-adminstartapp[-h][--templateTEMPLATE][--extensionEXTENSIONS][--nameFILES][--exclude[EXCLUDE]][--version][-v......