内容简介:前面一篇文章我们介绍了怎么在windows下安装配置GO开发环境。这一篇我们来介绍代码Golang的目录结构、应用编译、自定义包及远程包的引用。上一篇末尾我们设置的例如:
前言
前面一篇文章我们介绍了怎么在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下面保存的是应用源代码。
欢迎园子的大大们指正错误,共同进步。如果您觉得文章对您有帮助,可以点击右下角【推荐】一下。您的鼓励是作者坚持写作的最大动力!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- gcc 编译器对‘sqrt’未定义的引用与对‘pow’未定义的引用
- C赋值运算符 – 编译器生成还是自定义?
- java – 使用JAXB编译包含相同元素的重复定义的几个XSD
- 通过重写预定义的 Target 来扩展 MSBuild / Visual Studio 的编译过程
- c# – 无法定义使用“动态”的类或成员,因为编译器需要输入“System.Runtime.CompilerServices.Dynami...
- Xcode 编译疾如风系列(二):并行编译
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Just My Type
Simon Garfield / Profile Books / 2010-10-21 / GBP 14.99
What's your type? Suddenly everyone's obsessed with fonts. Whether you're enraged by Ikea's Verdanagate, want to know what the Beach Boys have in common with easy Jet or why it's okay to like Comic Sa......一起来看看 《Just My Type》 这本书的介绍吧!