第一个项目:猜数字
随机数生成:使用math/rand包和time包来生成随机数。通过设定随机数种子,可以在每次运行程序时生成不同的随机数。1.20版本的Go中,由于已经弃用了rand.Seed函数,因此已经不需要再使用时间戳来初始化随机数种子。
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
获取输入:使用fmt.Scanf函数可以简化代码,有以下优势
简单易用:fmt.Scanf函数可以方便地读取用户的输入,并将输入的值赋给指定的变量。相比手动解析用户输入的字符串,使用fmt.Scanf更加简单、直观。
类型安全:fmt.Scanf函数根据指定的格式字符串来解析用户输入的值,并将其转换为相应的变量类型。这样可以确保输入的值与变量类型匹配,避免类型错误。
自动处理空格和换行:fmt.Scanf函数会自动忽略输入中的空格和换行符,只读取有效的输入内容。这样可以减少代码编写和处理输入时的繁琐步骤。
错误处理:fmt.Scanf函数会返回读取的参数个数和可能的错误信息,可以通过检查返回值来判断用户输入是否符合要求,并进行相应的错误处理。
var guess int
fmt.Print("Please enter your guess: ")
_, err := fmt.Scanf("%d", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
条件语句和循环:通过使用条件语句(如if语句)和循环(如for循环),可以根据用户的输入和秘密数字进行逻辑判断和循环操作,直到用户猜中秘密数字为止。
附完整代码:
` import ( "fmt" "math/rand" "time" )
func main() { maxNum := 100 rand.Seed(time.Now().UnixNano()) secretNumber := rand.Intn(maxNum) fmt.Println("The secret number is", secretNumber)`
var guess int
fmt.Print("Please enter your guess: ")
_, err := fmt.Scanf("%d", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
fmt.Println("Your guess is", guess)
for guess != secretNumber {
if guess > secretNumber {
fmt.Println("Your guess is bigger than the secret number. Please try again")
} else {
fmt.Println("Your guess is smaller than the secret number. Please try again")
}
fmt.Print("Please enter your guess: ")
_, err = fmt.Scanf("%d", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
fmt.Println("Your guess is", guess)
}
fmt.Println("Correct, you legend!")
}
这个小游戏结合了随机数生成、用户输入和输出、条件语句和循环等编程知识点,具有简单易懂、用户友好、可扩展和学习价值等优点。上手简单,门槛低。通过编写这个小游戏,我们可以加深对这些编程概念的理解和应用,提高编程能力和解决问题的能力。
第二个项目:在线词典
1.抓包
本次选用了彩云小译作为词典工具。
找到包含词典结果的响应,记录相关的请求URL、请求方法、请求头、请求体和响应体。
2.代码
使用 curlconverter 等工具将抓取的请求转换为 Go 语言的请求代码。可以将生成的代码粘贴到你的程序中,并根据需要进行适当的修改和调整。步骤:
1. 找到dict项后,右键选择“复制-复制为cURL(bash)”
2. 打开工具,选择Go语言,将代码粘贴到输入框中
3. 复制输出结果
3.生成request和解析response
使用结构体来构建请求体数据。根据抓包结果中的请求体内容,创建一个相应的 Go 结构体,并将其转换为 JSON 格式。使用 JSON 转 Go 结构体工具,将抓包结果中的响应体的预览 JSON 转换为 Go 结构体。根据你的需求,选择需要解析的字段和数据结构。复制 1 中抓取到的dict项的预览json到工具中,根据需要选择相应的转换,再粘贴到总代码中即可。