我是Go语言的新手,我想了解如何设置Go环境。
有两件事我还不太了解,我希望社区能在这里澄清一下。
什么是Go项目设置以及go路径如何工作?
我从窗口的角度问这个问题。
答案 0 :(得分:2)
您的所有问题的答案都在这里:http://golang.org/doc/code.html 您应该真正阅读该页面,但总结一下您需要以这种方式构建go工作区的主要原因,就是go工具(包括编译器和自动下载库的工具)可以完成它所做的一切。 / p>
当您安装go程序时,它会自动放入$GOPATH/bin
,当您构建库时,它会自动添加到$GOPATH/pkg
,允许您拥有第三方库的集中位置,从而防止你要做不必要的图书馆副本。您的项目应位于$GOPATH/src/some_online_repository_location/project_name
或$GOPATH/src/project_name
。路径的最后一部分是包名称,但您应该在http://golang.org/doc/effective_go.html#names
示例:对于您在github上托管的项目hello,go工作区中的正确路径为:$GOPATH/src/github.com/youruser/hello/
。这允许go工具使用命令go get
自动从在线存储库下载库。示例:go get github.com/youruser/hello
维持这个"标准"允许go工具在没有任何配置的情况下轻松地在所有系统中工作,并且还具有使所有go项目以相同方式构建的副作用,因此当获得别人的代码时,你知道它是如何构建的并且你知道它将适用于你当前的工作空间。
阅读所有http://golang.org/doc/code.html文档,您应该更好地理解它。 希望它有所帮助,如果您有任何疑问,请发表评论。
答案 1 :(得分:1)
An Example
GOPATH = c:\gocode
App has 4 code files = msg.go (main), web.go, channel.go, date.go
App uses 1 external library = martini
**Source Locations**:
c:\gocode\src\app\msg\ (package is msg)
... web.go, channel.go
c:\gocode\src\app\msg\main\ (package is main)
... msg.go
c:\gocode\src\lib\ (package is lib)
... date.go
c:\gocode\src\github.com\go-martini\martini (pkg is martini)
... all martini lib files
**Imports Used by File** ( Import Pkgs Not Files, All Paths Relative to $GOPATH/src )
msg.go
... import “app/msg” > provides access to exported elements in web.go, channel.go
... import “lib” > provides access to exported elements in date.go
web.go
... import “lib” > provides access to exported elements in date.go
... import “github.com/go-martini/martini”
Note:
All files in the same pkg can access each other’s elements, even non exported ones.
No import needed or allowed, just a plain reference, as thought it was in the same file.