解决了找不到fmt包的问题

下载了go语言的安装包, 然后安装, 装完了需要设置三个地方:


1. 在windows的PATH变量中添加go的可执行文件所在的目录:


[javascript] view plaincopywindows上GOROOT和GOPATH的设置_gowindows上GOROOT和GOPATH的设置_fmt包_02

  1. PATH=C:\Go\bin;其他设置;  



2. 设置 GOROOT , 这个好理解, 直接设置成 C:\Go 即可


[javascript] view plaincopywindows上GOROOT和GOPATH的设置_gowindows上GOROOT和GOPATH的设置_fmt包_02

  1. GOROOT=C:\Go  



3. 设置GOPATH, 这个很难理解, 我的尝试:


[python] view plaincopywindows上GOROOT和GOPATH的设置_gowindows上GOROOT和GOPATH的设置_fmt包_02

  1. GOPATH=    #就是等于空, 这个是可以在系统环境变量中设置的, 结果报错go get 包的时候报错说$GOPATH未设置  

  2. GOPATH=;   #就是等于一个分号(;), go get 包开始可以运行, 不报错, 最后还是报错, 说$GOPATH未设置  

  3. GOPATH=C:\Go 或者GOPATH=C:\Go;    #go get 包报错, 说$GOPATH不能设置成和GOROOT一样的  


最后的解决方案是:

在C盘创建一个目录叫做GOPATH, 然后设置GOPATH=C:\GOPATH,  


[python] view plaincopywindows上GOROOT和GOPATH的设置_gowindows上GOROOT和GOPATH的设置_fmt包_02

  1. GOPATH=C:\GOPATH  


go get 包可以使用了, 最后包会安装到 C:\GOPATH\ 目录的pkg和src文件夹里, pkg里是*.a格式的, 暂且理解为库吧, src目录里是*.go格式的源码.



总结


实际上GOPATH, 可以是一个目录的列表, 在windows环境变量里设置的时候, 多个目录使用分号(;)隔开, 在linux里多个目录使用冒号(:)隔开, 组合的一个字符串.


GOPATH是一些列用于go来查找包的目录列表. 使用import "包名" 的时候, 如果在 GOROOT里找不到, 应该会转向到你的GOPATH里去寻找.


不让GOPATH和GOROOT环境变量的值设置为同一个目录, 可能是因为不想你新安装的包, 污染了核心go的pkg和src文件.


参考资料:

GOROOT 和 GOPATH: http://my.oschina.net/achun/blog/134002