这是我参与「第五届青训营 」伴学笔记创作活动的第 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基础语法,后期再更新优化项目方面的内容。