项目结构
Go语言规定了默认的项目目录结构,$GOROOT及$GOPATH中都使用如下路径:
bin/ 编译后的可执行文件 src/ 项目源码 pkg/ 保存编译后的库
代码可以放在多个文件中进行组织,与文件名没有关系,文件名可以被任意修改而不影响代码,Go是使用路径导入和通过包名来引用的,只要同一个目录中的package名一样就行。
package和import
Go程序是由package构成的,主程序从package main开始运行,使用import path来导入package,其中path是package文件的目录路径,import默认从$GOROOT和$GOPATH中搜索。
package main import ( "fmt" "math/rand" ) function main() { fmt.Println("产生一个随机数:", rand.Int()) }
包名与代码路径没有直接关系,一般情况下package名称与导入路径的最后一级目录名字相同(当然也可以不同,但是同一个文件夹中的package名称要一样)。
别名
也可以在导入时给package起个别名,然后使用别名来操作。
package main import ( f "fmt" ) func main() { f.Println("使用了包别名。") }
.操作
导入后不需要使用包前缀
import ( . "fmt" ) func main() { Println("...") }
_操作
import ( "fmt" _ "github.com/go-sql-driver/mysql" )
代码发布和共享
使用go get获取远程代码
如果远程代码符合go get规则,go get命令将会从代码仓库直接获取代码,并且进行编译和安装,它内置了对于github、googlecode、bitbucket及launchpad的支持;
go get github.com/astaxie/beego
完成后就可以在代码中进行import了
import ( "github.com/astaxie/beego" )
注意:如果要使用go get可以访问的方式发布软件,则要遵守相应的规则,也就是,如果你的软件有多个包,包之间的import也要遵守这种URL方式的路径规则。
建议将第三方库放在独立的GOPATH目录中,与项目目录分开。
建立符合go get的项目
符合go get的项目对于代码托管地址有关,地址不能变更,地址的变更的同时也要对引入路径进行变更(当然你可以不使用go get,而是直接clone代码后,按照引入路径人工建立各级目录)。
Step1: 在远程代码仓库建立项目,路径如下:
https://github.com/xglabc/webpick
Step2:从代码仓库获取代码到本地
需要在项目的GOPATH中执行,代码会被放到GOPATH中。
go get github.com/xglabc/webpick
完成后就可以在“项目目录”\src\github.com\xglabc\webpick中编写代码了,导入路径如下:
import ( "github.com/xglabc/webpick" )
建立传统型项目
获取代码
git clone inford.ink/xglabc/webpick
传统型项目结构对于代码托管地址没有关系,项目中可以包含完整的路径结构,可以直接将项目路径加入GOPATH中
src/ xglabc/ webpick/ main.go bin pkg
导入
import ( "xglabc/webpick" )