Go进阶Part2 | 青训营笔记

62 阅读2分钟

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

内容

仔细回顾Go语言的基础语法与注意事项。

基础语法

调用程序的main入口包。

导入标准库fmt包,功能是输入,格式化字符串。

main函数内容:调用fmt包的println函数

运行: go run . go文件路径

语法

声明变量

var 变量名 类型

或者:=直接赋值

var a = 1 var a int = 1 a := 1

可以不写类型,自动识别类型

if else

if 后面直接加大括号,if内容不加小括号

循环

Go只有for循环,for不加括号

分支switch。

切片!!!

类似动态数组

mike 创建

append 堆栈元素,扩容,需要赋值回去

复制切片

map

make定义

定义需要两个参数,【中是key的类型】后面是value的类型

用[]读取,写入键值对

读取时,可在变量后面加上, ok,判断map里面这个key值是否存在

Go的map是无序的,扁你输出顺序随机

range

range快速遍历数组和map。

遍历数组返回两个值,key,value

其他细节,略

函数

函数的返回值类型后知的。

原生支持返回多个值,一般都返回多个值,第一个是返回值,第二个是错误信息。

结构: func 函数名(参数名 参数类型) (返回值名 返回值类型) { 方法体内容 }

返回值类型可以不写?

指针

主要是对传入参数进行修改

add2函数写法无效,此处的n += 2为拷贝操作,不起作用。

要定义为指针类型 n *int,打印的时候也要加&n

结构体

错误处理

字符串操作

strings包内有很多操作函数

字符串格式化

printf加v以后可以细化打印内容

Json处理

保证结构体的字段,首字母都是大写。

结构体则可以用json.Marshal序列化buf数组,可以理解成“字符串”。

打印的话需要把buf数组转换成字符串格式。否则打印的是16进制编码。

也可用Unmarshal反序列化,把字符串转变为buf数组。

如果要后面序列化的字段为小写,在字段后面加上'json:“age”'的tag

时间处理

Sub计算两时间差

Format(格式实例字符串),把时间格式化为固定格式字符串

Parse(格式实例字符串 , 要解析的时间字符串) 解析字符串为时间

unix获取时间戳

数字解析

atoi 数字转字符串 itoa 字符串转数字

注:不同的操作函数,要引不同的包

小结

本篇笔记侧重记录回顾Go基础语法,后期再更新优化项目方面的内容。