GO语言基础笔记(下) | 青训营

114 阅读2分钟

GO基础语法

JSON处理

json是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。

头文件需要加上"encoding/json"

定义: 保证结构体每个字段的第一个字母为大写,就可以用json.Marshal()来序列化处理

type user struct {  
Name string  
Age int  
Hobby []string  
}
func main() {  
a := user{Name: "ma", Age: 19, Hobby: []string{"Apex", "Csgo"}}  
buf, err := json.Marshal(a)  //json处理
// 检查编码是否成功
if err != nil {  
panic(err)  
}  
fmt.Println(buf)  // 输出一堆数字(16进制的编码)
fmt.Println(string(buf))  //输出的是字符串
}

序列化后的字符串也可以使用json.Unmarshal()来反序列化到一个空的变量中

var b user
err = json.Unmarshal(buf,&b)

如果需要输出小写的字符串则需要添加json的tag 如定义时Age int 'json:"age"'

时间处理

头文件需要加上"time"

定义:

now := time.Now()

t := time.Date(2022, 11, 24, 1, 23, 20, 0, time.UTC)

可以使用函数获取单独的年月日,时分秒,如t.Year(),t.Month(),t.Day()等等

可以格式化时间t.Format("2006-01-02 15:04:05")

可以使用Sub函数来获取两个时间差 dif := t2.Sub(t)

使用now.Unix()来获取时间戳(Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒)

数字解析

字符串和数字之间的转换

strconv.Parsefloat("1.234",64) 把一个字符串解析为浮点数

strconv.ParseInt("111",0,64) 第一个数为要转换的字符串,第二个数为进制(如果为0则是自动判断进制),第三个数表示64位精度的整数

strconv.Atoi("123")快速转为10进制整数

进程信息

os.Args 获取运行时的命令行参数

可以使用os.Getenv()来获取环境变量,用os.Setenv()来设置环境变量

总结

现在终于把go语言的基础语法知识整理完了,总体上来说还是比较好接受的,就最后这一点知识点比较难理解,前面的都还好。后面就要开始做实战学习的笔记了,还有两篇实践笔记要写,争取拿到结营证书吧,大项目做起来还是很有难度的,打算就写笔记了。还是需要上手实践操作一下才能更好的理解go语言