简化错误处理,以提高可读性。觉得Go中的错误处理过于繁琐,而且全都使用了if语句,导致代码显得复杂。最后,认为对于这些库的使用,更多需要依赖代码引用和文档,因为课程主要关注了流程。
猜数字游戏:通过随机生成和用户输入进行简单操作。使用了bufio库。
基础库使用:
- strconv:主要用于字符和其他类型之间的转换。
- strings:用于字符处理,例如删除末尾字符。
简单字典:涉及网络库和JSON转换。在Go中,需要提前准备一个接收JSON的结构体。使用了两个工具:curlconverter生成Go请求,oktools生成结构体。
网络库net/http:使用Go的标准库,初始化请求客户端,创建和发送请求,接收并处理响应。
os库:用于获取环境参数,例如获取命令行参数。
SOCKS5代理:解析net库中接收的信息,连接到目标地址,使用context库管理进程。后台开启一个服务器交互进程,进行请求鉴权(auth函数)和连接通信(connect函数)。
鉴权阶段:
- 判断协议支持和认证方式。
- 解析接收到的数据,包括版本、方法数量和方法列表。
通讯阶段:
- 判断请求服务是否可接受,解析目标地址类型。
- 和鉴权阶段不同,这里还涉及目标地址和端口号。
鉴权和通讯阶段都有具体的数据处理和解析操作。
使用net库开启服务器,监听指定端口,接受客户端连接。
context库用于管理多个goroutine,创建父节点和子节点,进行进程控制。
最后,提到ctx.Done()用于判断ctx是否已关闭。