【Golang】学习笔记2 -- 代码目录结构、应用编译、自定义包及远程包的引用

栏目: Go · 发布时间: 6年前

内容简介:前面一篇文章我们介绍了怎么在windows下安装配置GO开发环境。这一篇我们来介绍代码Golang的目录结构、应用编译、自定义包及远程包的引用。上一篇末尾我们设置的例如:

前言

前面一篇文章我们介绍了怎么在windows下安装配置 GO 开发环境。这一篇我们来介绍代码Golang的目录结构、应用编译、自定义包及远程包的引用。

代码目录结构

上一篇末尾我们设置的 GOPATH 下的src目录就是我们接下来开发程序的主要目录,所有的源码都是放在这个目录下面, 一般的做法就是一个目录一个项目

例如: %GOPATH%/src/mymath 这个目录就代表 mymath 这个应用包或者可执行应用(根据 packagemain 还是其他来决定,如果是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 文件

【Golang】学习笔记2 -- 代码目录结构、应用编译、自定义包及远程包的引用

这个.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 文件。

【Golang】学习笔记2 -- 代码目录结构、应用编译、自定义包及远程包的引用

我们执行 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下面保存的是应用源代码。

欢迎园子的大大们指正错误,共同进步。如果您觉得文章对您有帮助,可以点击右下角【推荐】一下。您的鼓励是作者坚持写作的最大动力!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的自我修养

程序员的自我修养

陈逸鹤 / 清华大学出版社 / 2017-5 / 49.00

程序员作为一个职业、也作为一个群体,正逐渐从幕后走向前台,并以他们自己的能力加速改变着世界,也改变着人们生活的方方面面。然而,对于程序员,特别是年轻程序员们来说,如何理解自己的职业与发展,如何看待自己的工作与生活,这些问题往往比那些摆在面前的技术难题更让他们难以解答。 这本书从一个成熟程序员、一名IT管理者的角度,以杂记的形式为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至......一起来看看 《程序员的自我修养》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试