什么是 go path
下面摘自官方定义
GOPATH
环境变量指定了你的工作空间位置。它或许是你在开发Go
代码时, 唯一需要设置的环境变量。
Go
代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:
src
目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),pkg
目录包含包对象,bin
目录包含可执行命令。
go
工具用于构建源码包,并将其生成的二进制文件安装到pkg
和bin
目录中。src
子目录通常包会含多种版本控制的代码仓库(例如Git或Mercurial), 以此来跟踪一个或多个源码包的开发
总结一下官方的描述重点:
- 所有Go代码必须放在GoPath中
- src包含所有源代码,pkg包含编译后的包文件(go中后缀为.a,java中为.jar),bin包含编译后的可执行文件(go中根据平台不一样后缀不一样,java中所有平台都为.jar)
为什么Java项目放在任何路径都可以正常编译呢?
Java中有一个类似GOPATH
的参数classpath
,它是Java运行时环境搜索类和其他资源文件(比如jar\zip等资源)
的路径。
classpath
默认为jdk的相关目录(lib)和当前目录。java程序编译和运行时,都可以指定classpath。我们之所以感觉java项目可以任意目录执行,是因为idea、maven这些工具帮我们指定好了运行时依赖的classpath路径。