build命令只能作用于带有main函数的源文件,会生成一个可执行文件,默认就在源文件的文件夹下面。如果作用于其他非main的源文件,没有任何效果。

install命令可以作用于任何文件,如果是非main文件,那么会在.pkg文件夹下生成.a文件,也就是库文件,这些库文件是被调用的。如果作用于main文件,那么会在bin目录下生成一个可执行文件,同时还会把中间用到的.a文件拷贝至pkg文件夹下,这样以后再install的时候,就不需要重新生成这些库文件了,提高了编译的效率。

而且,一旦GOPATH下的引用的源文件变化了,即使已经有该文件的.a文件了,go install还是可以检测到的,会进行重新的编译。所以,一般选择install比较好。


但是install 有另一个问题,就是如果使用的是别的GOPATH下的库文件(比如云端的),已经存在.a时,再修改源文件是不会重新编译的,这个需要注意。