golang的代码目录一般先设置go的工作空间。go 命令依赖环境变量:$GOPATH 运行,设置好go的工作空间之后一般生成3个文件夹:src、bin、pkg

  • src用来存放源代码(比如:.go .c .h .s等)该目录就是接下来开发程序的主要目录
  • pkg 编译后生成的文件,一般在ide运行之后会自动编译,产生的文件。
  • bin 编译后生成的可执行文件

代码目录结构规划

上面说了,工作空间下的src目录就是我们接下来开发程序的主要目录,一般情况下一个项目就是一个目录,那么区分是可执行应用还是程序包主要是由package是main还是其他来决定,一般main就是可执行应用。

所以当新建应用或者一个代码包时都是在src目录下新建一个文件夹,文件夹名称一般是代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包路径就是"github.com/astaxie/beedb",包名称是最后一个目录beedb。

下面我就以awesomeProject为例来讲述如何编写应用包,执行如下代码

cd $GOPATH/src
mkdir awesomeProject
cd ./awesomeProject
vim first.go

package awesomeProject

func First(x string) string{
    return  x
}

这样我的应用包目录和代码已经新建完毕,注意:一般建议package的名称和目录名保持一致.

接下来我们建立一个可执行应用包

vim $GOPATH/src/mainapp/main.go

内容为:

package main

import (
    "awesomeProject"
    "fmt"
)

func main(){

    fmt.Printf(awesomeProject.First("hello ,world"))
}

最后输出:

hello ,world

可以看到这个的package是main,import里面调用的包是helloworld,这个就是相对于$GOPATH/src的路径,如果是多级目录,就在import里面引入多级目录,如果你有多个GOPATH,也是一样,Go会自动在多个$GOPATH/src中寻找。

这里我们知道了如何自己做包,那么下面我们来看一下如何获取远程包:

go语言有一个获取远程包的工具就是go get,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad),go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行go install在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以,那么很多时候包是被墙的那么我们就可以自己手动装包了,理解了原理,我们只需要将下载下来的包放在src的相关目录即可。

20191102183712.jpg