在 Go 中获取 GOPATH 的最佳方案

2 · Richard Chen · July 17, 2020, 12:47 p.m.
此文章主要讲述了在 golang 程序中完美获取 GOPATH 的方法 初级 golang 的最初几个版本都是依赖于环境变量中的 GOPATH 来进行判断的, 所以在这种情况下,只需要 os.Getenv("GOPATH") // import "os" 即可,最多再解析一下 sep := string(filepath.ListSeparator) pathList := strings.Split(path, sep) // import "strings" 中级 我们有时发现,即使是没有 GOPATH 这个 env,也是可以正常运行。 经阅读 golang 源代码后,不难发现,其有默认值。  golang 源代码 : c.GOPATH = envOr("GOPATH", defaultGOPATH()) 不难发现,其实我们 build 包中就已有 envOr 的实现,于是, 现在的我们只需要 build.Default.GOPATH // import "go/build" 即可 高级 我们发现 $ go env -w GOPATH=/foo/bar 时,并未将 /fo...