第01天(基本类型、流程控制)
01_课程安排
02_go介绍
03_环境搭建
04_帮助文档的使用
05_第一个go程序
06_命令行运行程序
07_数据类型作用和命名规范
08_变量的声明
09_变量初始化和自动推导类型
10_自动推导类型和赋值区别
11_Printf和Println的区别
12_多重赋值和匿名变量
13_常量的使用
14_多个变量或变量的定义
15_iota枚举
16_类型的分类
17_bool类型
18_浮点型
19_字符类型
20_字符串类型
21_字符和字符串的区别
22_复数类型
23_格式化输出
24_变量的输入
25_类型转换
26_类型别名
27_运算符(上)
28_运算符(下)
29_if的使用
30_if支持初始化语句
31_if_elseif_else的使用
32_switch的使用
33_switch使用的补充
34_for循环的使用
35_range的使用
36_break和continue的区别
37_goto的使用
第02天(函数、工程管理)
01_昨日回顾
02_无参无返回值函数的使用
03_有参无返回值函数:普通参数列表
04_不定参数类型
05_不定参数的传递
06_有参无返回值函数使用的总结
07_函数只有一个返回值
08_函数有多个返回值
09_函数定义格式总结
10_有参有返回值函数的使用
11_普通函数的调用流程
12_递归函数的调用流程
13_通过递归实现的累加
14_函数类型
15_回调函数
16_匿名函数基本语法
17_闭包捕获外部变量特点
18_闭包的特点
19_defer的使用
20_多个defer的执行顺序
21_defer和匿名函数结合使用
22_获取命令行参数
23_局部变量特点
24_全局变量
25_不同作用域的同名变量
26_工作区介绍
27_导入包的使用
28_工程管理:同级目录
29_工程管理:不同目录
30_init函数的介绍
31_go_intall命令的使用
第03天(复合类型)
01_昨日回顾
02_变量的内存和变量的地址
03_指针变量的基本使用
04_不要操作没有合法指向的内存
05_new函数的使用
06_值传递
07_地址传递
08_为什么需要数组
09_数组的基本操作
10_数组初始化
11_二维数组的介绍
12_数组比较和赋值
13_随机数的使用
14_冒泡排序原理
15_冒泡排序代码实现
16_数组做函数参数是值拷贝
17_数组指针做函数参数
18_切片介绍
19_数组和切片区别
20_切片的创建
21_切片截取
22_切片和底层数组关系
23_append函数的使用
24_append扩容特点
25_copy的使用
26_切片做函数参数
27_猜数字:产生一个随机的4位数
28_猜数字:取出每一位数
29_猜数字:输入一个4位数并取出每一位
30_猜数字:逻辑处理
31_map介绍
32_map的基本操作
33_map赋值
34_map遍历
35_map删除
36_map做函数参数
37_结构体普通变量初始化
38_结构体指针变量初始化
39_结构体成员的使用:普通变量
40_结构体成员的使用:指针变量
41_结构体比较和赋值
42_结构体做函数参数:值传递
43_结构体做函数参数:地址传递
44_go语言可见性规则验证
第04天(面对对象编程)
01_昨日回顾
02_面向对象编程
03_匿名字段作用
04_匿名字段初始化
05_成员操作
06_同名字段
07_非结构体匿名字段
08_结构体指针类型匿名字段
09_方法介绍
10_面向过程和面向对象函数区别
11_结构体类型添加方法
12_方法使用总结
13_值语义和引用语义
14_指针类型和普通类型的方法集
15_方法的继承
16_方法的重写
17_方法值
18_方法表达式
19_接口类型介绍
20_接口的定义和实现
21_多态的表现
22_接口继承
23_接口转换
24_空接口
25_通过if实现类型断言
26_通过switch实现类型断言
第05天(异常、文本文件处理)
01_昨日回顾
02_error接口的使用
03_error接口的应用
04_显式调用panic函数
05_数组越界导致panic
06_recover的使用
07_字符串操作常用函数介绍
08_字符串操作代码验证
09_字符串转换
10_正则表达式(上)
11_正则表达式(中)
12_正则表达式(下)
13_json介绍
14_通过结构体生成json
15_struct_tag的使用
15_通过map生成json
16_json解析到结构体
17_json解析到map
18_文件分类和为什么需要文件
19_文件常用操作接口介绍
20_标准设备文件的使用
21_WriteString的使用
22_Read的使用
23_借助bufio实现按行读取内容
24_文件案例:拷贝文件
第06天(并发编程)
01_昨日回顾
02_并行和并发的区别
03_go语言并发优势
04_创建goroutine
05_主协程先退出
06_主协程先退出导致子协程没来得及调用
07_runtime.Gosched的使用
08_runtime.Goexit的使用
09_runtime.GOMAXPROCS的使用
10_多任务资源竞争问题
11_channel介绍
12_通过channel实现同步
13_通过channel实现同步和数据交互
14_无缓冲channel
15_有缓冲channel
16_关闭channel
17_通过range遍历channel内容
18_单向channel特点
19_单向channel的应用
20_Timer的使用
21_Timer实现延时功能
22_定时器停止
23_定时器重置
24_Ticker的使用
25_select的作用
26_通过select实现斐波那契数列
27_通过select实现斐波那契数列(画图)
28_select实现的超时机制
第07天(网络概述、socket编程)
01_昨日回顾
02_网络协议介绍
03_分层模型介绍
04_层和协议
05_mac地址介绍
06_网络层的作用
07_传输层作用
08_应用层功能
09_网络分层和协议总结
10_网络通信条件
11_通信过程如何组包和拆包
12_socket简单介绍
13_cs模型介绍
14_TCP服务器代码编写
15_netcat工具的使用
16_TCP客户端代码编写
17_简单版并发服务器
18_客户端即可输入也可接收服务器回复
19_文件传输原理分析
20_os.Stat的使用
21_传输文件:发送方
22_传输文件:接收方
23_传输文件功能验证
24_并发聊天服务器功能演示
25_并发聊天服务器原理分析
26_并发聊天服务器:广播上线
27_并发聊天服务器:广播消息
28_并发聊天服务器:查询在线用户
29_并发聊天服务器:修改用户名
30_并发聊天服务器:用户主动退出
31_并发聊天服务器:超时处理
第08天(HTTP编程)
01_昨日回顾
02_web工作流程
03_http协议和url介绍
03_请求包和响应包简单介绍
04_请求报文格式分析
05_服务器如何知道用户需要什么资源
06_响应报文测试方法
07_响应报文格式分析
08_http编程介绍
09_http服务器编程
10_http服务器获取客户端的一些信息
11_http客户端编程
12_百度贴吧小爬虫
13_百度贴吧小爬虫总结
14_并发版网络爬虫
15_段子爬虫:明确目标
16_段子爬虫:爬主页面有用链接
17_段子爬虫:爬取段子页面
18_段子爬虫:把内容存储到文件中
19_段子爬虫:并发爬虫