这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
本节课主要学习了Go的基础语法
- Go简介
- 特点
-
- 高并发:通过设计保证系统能够同时并行处理很多请求 -
- 使用标准库即可,不需要借助第三方库 -
- 基于C语言,但语法更简单 -
- 完善工具链 -
- 编译结果静态链接,无需附加,编译速度快 -
- 跨平台 -
- 垃圾回收
- 公司
- 基础语法
- 变量
- 声明
- var 变量名 (变量类型)= 值
- 变量名 := 值
- 变量类型后置
- 常量
- 声明
- const 变量名 = 值
- 没有确定类型,通过上下文自动确定
- if else
- 条件无括号,语句大括号
- 循环 只有for
- 条件三段均可省略,没有条件即为死循环
- continue break
- switch
- 每个case无需break
- 取代if else : switch后不加东西,case后加条件
- 切片
- 可变长度的数组
- 原理:存储长度+容量+指针
- 创建
- s := make([]string, 3)
- s := string{"1", "2"}
- 修改
- 切片 [:]
- s = append(s, "1")传入数组
- map(哈希/字典)
- 创建
- 变量名 := make(map[key类型]value类型)
- 修改
- delete(m, "one")
- 查询
- key, ok := m["unknow"]
- range
- 使用range遍历
- slice:下标 值 (不需要的用_)
- map:键 值
- 函数
- func 函数名(参数 参数类型)(返回值 返回值类型)
- 一般为多个返回值,最后的值为错误信息
- 指针
- 对传入的参数进行修改
- * &
- 结构体(对象)
- 带类型的字段的集合
- 错误处理
- 函数返回值加入 error类型
- 字符串
- 中文字符串长度不等于文字数
- 格式化fmt.Printf()
- %v 打印变量的值
- %+v %#v 更详细的信息
- %.2f 保留两位的浮点数
- json处理
- struct每个字段的首字母大写
- json.Marshal(a)
- 时间处理
- 现在的时间,格式化t.Format("2006-01-02 15:04:05"),时间差t2.Sub(t),时间戳now.Unix()
- 数字解析 “strconv”包
- Atoi
- defer延迟函数,FILO
- go goroutines 启动“子线程” 处理并发