ArchLinux 上通过 vscode 开发 Go
安装 Go 编译器和 Go 开发中常用的工具(比如 goimports)
sudo pacman -S go go-tools
vscode 插件安装
- 在插件商城中搜索 go ,并安装
Ctrl + Shift + p打开 vscode 命令框,输入Go: Install/Update Tools,全选所有项目并安装。
注意:安装过程中需要连接 github,如果连接网络失败,可以在 vscode 中的设置中配置 proxy.
测试运行 helloworld
通过一个 go 小程序来测试是否环境安装成功。
hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, Arch!")
}
输入命令
go ./hello.go
终端打印出 Hello, Arch! 说明 go 语言环境安装成功。
$GOPATH
$GOPATH 默认设置在 ~/go 文件夹
该文件夹默认的文件目录为
- bin 项目编译生成的二进制文件
- pkg 项目编译的中间产物,加速编译
- src 项目源码
命令 go get 可以下载最新版本的包到 src 目录下。
这种方式会存在一个弊端:即所有的项目都依赖于 src ,这样不同项目就无法实现所依赖 packages 多版本控制。
Go Module
Go Module 可以解决依赖问题。
参考文献:Go Module
Sock5 开发
根据《Go 语言的实战案例》,首先了解 Socks5 的工作原理,然后跟着老师手写一遍 Sock5 服务器的代码。
Sock5 原理
我们正常访问一个网页,如果不经过代理服务器,访问流程就是:建立 TCP 连接(三次握手) -> 发送 HTTP 请求 -> 返回 HTTP 相应。如果经过代理服务器,则需要在一开始多一个和服务器建立 TCP 连接的步骤,然后再通过服务器与请求服务器建立 TCP 连接。
实现时:
- 先实现了一个 TCP echo server,我们向该 server 发送任意信息,它会原封不动地返还给我们。
- 给 TCP echo server 添加 auth 功能,通过解析向 server 发送的消息的内容来决定是否授权。
- 使 TCP echo server 与目标服务器建立连接,实现消息发送与转发。