想要更好的了解golang,阅读golang源码是必不可少的。首先需要从源码编译golang,便于我们调试开发。
获取源码
可以从官网下载源码,如下载go1.18.src.tar.gz。
安装编译工具
golang1.5以后的版本需要使用golang1.4进行编译安装,golang1.4及以前的版本可以使用gcc进行编译安装。
可以在官网选择一个版本作为编译工具。
linux可以选择go1.4.3.linux-amd64.tar.gz。
windows可以选择go1.4.3.windows-amd64.msi
其中go1.4也可以从源码编译,但这里我使用编译好的版本,以下使用go1.4编译当前最新的go1.18。
设置环境变量
-
linux
export CGO_ENABLED=0 # 设置go1.4的目录位置 export GOROOT_BOOTSTRAP=~/go1.4 -
windows
set CGO_ENABLED=0 set GOROOT_BOOTSTRAP=C:\dev\go1.4
编译
进入待编译源码的src目录下
-
linux执行./make.bash进行编译 -
windows执行all.bat进行编译
可能会出现一些test错误但是不影响实际使用。
验证
可以修改.\src\fmt\print.go文件中的Println函数,增加一行输出
func Println(a ...any) (n int, err error) {
print("hello\n") // 增加该行
return Fprintln(os.Stdout, a...)
}
调用修改后的fmt.Println函数,验证修改是否正确。