青训营学习第一次时,今天根据课程,完成了对Go语言的简单入门,感觉还是很优雅的!
也跟着老师学了一天,觉得还是很有收获的,简单分享一下自己的学习。
正文
分享自己的体会吧,觉得Go语言新潮,写起来很文雅
就分享分享今天学习的总结吧
1 HelloWorld
每个语言都有自己的HelloWorld
go
package main
import "fmt"
func main() {
fmt.Println("HelloWorld!")
}
运行后,就会出现HelloWorld
2 神秘数字,猜数游戏
一开始生成一个随机数,然后根据用户的输入,提示用户输入的数字是大还是小
最终用户输入正确后,结束进程
go
复制代码
maxNumber := 200
secretNumber := rand.Intn(maxNumber)
3 字典
学习到了,结构体的创建以及使用,可以类比于对象这个概念
go
复制代码
// DictRequest 字典请求对象
type DictRequest struct {
TransType string `json:"trans_type"`
Source string `json:"source"`
}
序列化对象
go
复制代码
request := DictRequest{TransType: "en2zh", Source: word}
//这里json解析后,返回的是一个字节数组
buf, e := json.Marshal(request)
反序列化对象
go
复制代码
//先定义一个对象
var dictResponse DictResponse
//对bodyText进行反序列化,注意这里需要加上&才能进行赋值
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
log.Fatal("json反序列化出错")
}
发送请求
go
复制代码
//创建client
client := &http.Client{}
构建Request对象
go
复制代码
req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)
if err != nil {
log.Fatal(err)
}
关闭流,从流中读取body
go
复制代码
defer resp.Body.Close()
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
循环中遍历元素
_, item第一个是下标,可以用_代替
go
复制代码
//打印翻译的详情,
for _, item := range dictResponse.Dictionary.Explanations {
fmt.Println(item)
}
4 总结
概括一下,今天真的收获很多,看到开启一个子线程是如此的简单,仅需要一个go就可以实现,作为第一天接触go语言的初学者,对今天学的还是有点吃力,加油加油!