猜谜游戏
游戏通过程序生成一个随机数让玩家进行猜测,玩家输入一个数字后,程序给出提示:该数字是大于还是小于随机数,直至玩家猜对为止,退出程序。
如何获得随机数?
在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地址
- 通过F12或者鼠标右键->检查进入开发者工具,点击
network
- 如本例,在文本框输入一个单词,并在点击翻译后,观察
network
标签页下记录的网络请求。 General
下的Request URL
便是我们需要的API地址。- 右键
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