一、本堂课重点内容:
Go 语言学习背景介绍
Go 语言基础语言详细讲解
- 开发环境
- 基础语法
- 标准库
Go 语言实战
- 项目一:猜谜游戏
- 项目二:命令行词典
- 项目三:SOCKS5 代理
二、详细知识点介绍:
Go 语言学习背景介绍
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
Go 语言基础语言详细讲解
- 开发环境
开发环境选择了VScode,安装了Golang,顺利运行样例程序Hello World
- 基础语法
- 变量
1 | var a="initial" |
- 数组
1 | var a[5]int |
- 切片
1 | s:=make([]string,3) |
- map
1 | m:=make(map[string]int) |
- range
1 | nums:=[]int{2,3,4} |
三、实践练习例子:
项目一:猜谜游戏
- 生成随机数
1 | rand.seed(time.Now().UnixNano())//很重要,需用时间戳来初始化随机数种子,否则生成伪随机数 |
- 读取用户输入
1 | reader := bufio.NewReader(os.Stdin) //输入流 |
- 实现游戏循环
1 | for { |
- 实现判断逻辑
1 | if { |
项目二:命令行词典
- 抓包
进入官网彩云小译 - 在线翻译 (caiyunapp.com)
右键检查-Network-dict (请求 URL: https://api.interpreter.caiyunai.com/v1/dict 请求方法: POST)
- curl生成Go代码 Convert curl to Go (curlconverter.com)
1 | package main |
- 生成request body
1 | type DictRequest struct { |
- 解析response bodyJSON转Golang Struct - 在线工具 - OKTools
1 | type DictResponse struct { |
项目三:SOCKS5 代理
- 原理
- author部分
1 | // +----+----------+----------+ |
- Requests部分
1 | // +----+-----+-------+------+----------+----------+ |
- Replies部分
1 | // +----+-----+-------+------+----------+----------+ |
四、课后作业:
修改第一个例子猜谜游戏里面的最终代码,使用fmt.Scanf来简化代码实现
1 | package main |
修改第二个例子命令行词典里面的最终代码,增加另一种翻译引擎的支持
1 | //go run .\go-by-example\simpledict\v4\main.go hello |
在上一步骤的基础上,修改代码实现并行请求两个翻译引擎来提高响应速度
修改main函数通过goroutine实现并发
1 | func main() { |
响应速度对比可得,并发后响应速度提升明显