前言
前面一篇文章我们介绍了怎么在windows下安装配置GO开发环境。这一篇我们来介绍代码Golang的目录结构、应用编译、自定义包及远程包的引用。
代码目录结构
上一篇末尾我们设置的GOPATH下的src目录就是我们接下来开发程序的主要目录,所有的源码都是放在这个目录下面,一般的做法就是一个目录一个项目。
例如: %GOPATH%/src/mymath 这个目录就代表mymath这个应用包或者可执行应用(根据package是main还是其他来决定,如果是main就是可执行应用,非main就是应用包。)
所以当我们新建应用或者一个代码包时都是在src目录下新建一个文件夹,文件夹名称一般是代码包名称。当然新建多级目录也是可以的,例如在src下面新建了目录%GOPATH%/src/github.com/HeBinz/OpTestlink 那么这个包路径就是"github.com/HeBinz/OpTestlink",即从src目录开始算的目录层级。
下面我就以mymath为例来讲述如何编写应用包,执行如下代码,切换到D盘(我们之前设置的GOPATH所在的盘),然后切换到GOPATH下的src目录,创建mymath文件夹:
D:
cd %GOPATH%/src
mkdir mymath
新建文件sqrt.go,添加如下内容:
package mymath
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
这样我的应用包目录和代码已经新建完毕,注意:一般建议package的名称和目录名保持一致。
自定义包安装
上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装
- 进入对应的应用包目录,然后执行go install,就可以安装了
- 在任意的目录执行如下代码go install mymath
我们执行安装之后,可以进入如下目录(\({GOOS}_\){GOARCH}和操作系统有关,像博主的windows 64位为windows_amd64)
cd $GOPATH/pkg/${GOOS}_${GOARCH}
可以看到如下mymath.a文件
这个.a文件就是应用包,那么我们如何进行调用呢?
自定义包调用
接下来我们新建一个可执行应用来调用这个应用包,和前面的步骤一样,我们在src目录下新建一个目录mathapp
cd %GOPATH%/src
mkdir mathapp
然后创建一个main.go文件,添加下面的内容:
package main
import (
"mymath"
"fmt"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
可以看到我们这次定义的package是main,import里面调用的包是mymath,也就是我们前面自定义的那个包。
需要说明的是,如果是多级目录,就在import里面引入多级目录,如果你有多个GOPATH,也是一样,Go会自动在多个$GOPATH/src中寻找。
如何编译我们新建的mathapp程序呢?进入该应用目录,然后执行go build,那么在该目录下面会生成一个mathapp的可执行文件,在windows下默认生成的是.exe文件。
我们执行mathapp.exe文件,发现它输出如下内容
Hello, world. Sqrt(2) = 1.414213562373095
远程包
获取远程包
go语言有一个获取远程包的工具就是go get,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)
go get github.com/astaxie/beedb
go get -u 参数可以自动更新包,而且当go get的时候会自动获取该包依赖的其他第三方包
通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具。
通过上面获取的代码在我们本地的源码相应的代码结构如下
$GOPATH
src
|--github.com
|-astaxie
|-beedb
pkg
|--相应平台
|-github.com
|--astaxie
|beedb.a
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行go install
远程包的调用
在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以
import "github.com/astaxie/beedb"
再次提醒:bin目录下面存的是编译之后可执行的文件,pkg下面存放的是应用包,src下面保存的是应用源代码。
欢迎园子的大大们指正错误,共同进步。如果您觉得文章对您有帮助,可以点击右下角【推荐】一下。您的鼓励是作者坚持写作的最大动力!
有疑问加站长微信联系(非本文作者)