前言
心心念念的青训营终于开始了,今天根据课程,完成了对Go语言的简单入门,感觉还是很优雅的!
自己也跟着老师学了一天,觉得还是很有收获的,下面就简单的记录以及分享一下自己今天的学习
正文
先来说说自己的体会吧,觉得Go语言比较优雅,写起来很帅气
就通过今天自己打的几个Demo来进行一下今天学习的总结吧
HelloWorld
每个语言都有自己的HelloWorld
package main
import "fmt"
func main() {
fmt.Println("HelloWorld!")
}
运行后,就会出现HelloWorld
神秘数字,猜数游戏
这个Demo主要是猜测一个随机数的demo
最开始生成一个随机数,然后根据用户的输入,提示用户输入的数字是大还是小
最终用户输入正确后,结束进程
maxNumber := 200
secretNumber := rand.Intn(maxNumber)
这里其实还是有一个小疑问
就是我本地生成随机数的时候,不用指定随机因子,也可以每次输出不同的随机数
Seed方法在我本地显示被废除
这里是不是我的Go版本太高了?
字典
这里边学习到了,结构体的创建以及使用,可以类比于对象这个概念
// DictRequest 字典请求对象
type DictRequest struct {
TransType string `json:"trans_type"`
Source string `json:"source"`
}
序列化对象
request := DictRequest{TransType: "en2zh", Source: word}
//这里json解析后,返回的是一个字节数组
buf, e := json.Marshal(request)
反序列化对象
//先定义一个对象
var dictResponse DictResponse
//对bodyText进行反序列化,注意这里需要加上&才能进行赋值
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
log.Fatal("json反序列化出错")
}
发送请求
//创建client
client := &http.Client{}
构建Request对象
req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)
if err != nil {
log.Fatal(err)
}
关闭流,从流中读取body
defer resp.Body.Close()
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
循环中遍历元素
_, item中第一个是下标,不用的话可以用_代替
//打印翻译的详情,
for _, item := range dictResponse.Dictionary.Explanations {
fmt.Println(item)
}
这个小项目中,我也自己独立思考结合猜数Demo,将world从系统启动参数改成了用户输入,也算是一个独立的小小思考
Socks5
这个项目,如果大家遇到使用 nc命令无法识别的话
- 下载nc
- 解压到一个目录
- 配置环境变量到该目录
- 然后重新打开cmd,就可以运行了
结语
总体来说,今天真的收获满满,也体会到了Go语言的魅力,开启一个子线程是如此的简单以及优雅,只需要一个go就可以实现,不过还是需要复习以及回顾今天的一些知识点,通过这两个Demo的编写,自己也更加熟悉了Go语言的一些特性以及写法,明天准备挑战一下作业内容,对两个Demo进行修改,后续也会发文记录~