GO基础 | 青训营笔记

397 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天

一、本堂课重点内容:

由于已经具有一定Go语言基础,因此不再过多介绍开发环境安装以及基础语法,仅记录个人新学习到的一些知识点:

  • Golang中的错误处理
  • JSON处理

二、详细知识点介绍:

  • 错误处理

Go语言的错误处理用法简单同时又很麻烦,需要对每一个err单独进行判断。

  • JSON

JSON(Javascript Object Notation)是 Javascript 的一个子集,也是一种轻量级的、独立于语言的文本格式,具有体积小、解析快、易于处理等优势。JSON是非常流行的数据交换格式,目前我们看到很多的开放平台,基本上都是采用了 JSON 作为他们的数据交互的接口。Go 语言的标准库已经非常好的支持了 JSON。

Go语言的json包提供了许多关于json操作的函数,例如json.Marshal、json.Unmarshal等,学习起来都比较简单。但是在field tag (后续简称为tag)这块可能有很多同学不太理解。

tag用来指定编码到指定文本格式时结构体中各个field所对应的key名称以及可选的一些操作,例如:

type Animal struct{
    Name string `json:"name",xml:"Name"`
    Other string `json:"other_infor,omitempty",xml:"Other"`
}

由于Go语言结构体中field的大小写与对外可见性相关,但是对json这类文本格式语言大小写并无区别,使用tag最大的作用还是添加encoding信息。

三、实践练习例子:

  1. 错误处理
json,err := json.Marshal(s)
if err!=nil{
    //your err handle
}
  1. json处理
type Name struct{
    FirstName  string `json:"first_name"`
    LastName   string `json:"last_name"`
    MiddleName string `json:"middle_name,omitempty"`
}
p := Person{FirstName: "Hunag", LastName: "zhifeng"}
//struct->json序列化
jsonP, _ := json.Marshal(p)
fmt.Println(string(jsonP))
var unjsonP Person
//json->struct反序列化
_ = json.Unmarshal(jsonP, &unjsonP)
fmt.Println(unjsonP.FirstName)

四、课后个人总结:

第一天的理论课程十分基础,实践课程对我来说有点难度,好多工具不熟悉都没用过。

五、引用参考:

参考资料:# Go语言中的strcut tag