内容简介:前面一篇文章我们介绍了怎么在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 编译疾如风系列(二):并行编译
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员的自我修养
陈逸鹤 / 清华大学出版社 / 2017-5 / 49.00
程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。 这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至......一起来看看 《程序员的自我修养》 这本书的介绍吧!