这是我参与「第五届青训营 」伴学笔记创作活动的第1天。
今天的课程内容为:
- Go 语言介绍
- Go 语言入门
- 开发环境
- 基础语法
- 标准库
- Go 语言实战
- 项目一:猜谜游戏
- 项目二:命令行词典
- 项目三:SOCKS5 代理
Go语言介绍
Golang是由谷歌公司开发的一种静态,强类型,编译型,具有垃圾回收功能的高级编程语言。相较于其他语言,Golang更适合于高性能、高并发的场景。
Go语言入门
开发环境
Golang是一个开源的编程语言,它的官方网站包含它的各种信息,包括各个版本的安装包,使用文档,第三方库的搜索工具等等。在官网选择对应操作系统和相应版本的安装包进行安装之后,我们即可使用Golang进行开发了。
有时,我们无法连接到Github,导致无法安装Golang的第三方库,这时我们需要修改Golang的一些配置。在这里我推荐七牛云,可以轻松解决无法连接至Github的问题。
基础语法
Golang的很多语法都借鉴了其他语言,其中最明显的就是C语言,Golang的循环舍弃了C语言中的do...while与while,只保留了for。同时Golang也具有自己的特点,Golang中的if与for都不需要在后面加上小括号,但都需要加上中括号将循环体框起来。
// Golang
for i := 0; i < 9; i++ {
...
}
if x == 1 {
...
}
// C
for (int i = 0; i < 9; ++i) {
...
}
if (x == 1) {
...
}
标准库
前文我们提到,我们可以在Golang的官网找到使用文档,其中就包括标准库的相关文档。在今天的课程中,学习包括fmt,bufio,net等在内的各种标准库。
Go语言实战
项目一:猜谜游戏
通过读取stdin的输入,判断用户输入的数字和程序随机生成的数字是否相等,如果相等则输出正确至stdout并结束程序,如果不等,则提示用户数字偏大还是偏小,直到用户正确。 涉及的标准库包括获取当前时间的"time",生成随机数的"math/rand",读取stdin输入的"os",创建流式读取的"bufio"等。
项目二:命令行词典
通过Chrome的开发者工具,获取词典网站的查询接口,通过Golang的标准库"net/http"发起请求,查询某个英文单词的释意与读音。同时,学习如何将Golang的结构体通过标准库"encoding/json"序列化为字符串,或字符串反序列化为Golang结构体。
项目三:SOCKS5 代理
通过Golang开发一个Socks5的代理端口程序,使得我们可以通过代理端口访问其他网站。在这个项目中,我首先学到了Socks5的协议内容,同时,学到了如何通过标准库"net"来监听端口,使用"go"关键字启动goroutine,使用标准库"context"来管理上下文。