栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

【Go】Go 的项目目录

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Go】Go 的项目目录

文章目录
  • 一、Go 的项目目录
    • 1. 适合个人开发者
    • 2. 目前流行的项目结构
    • 3. 适合企业开发者
  • 二、Go 项目构建及编译(第一个 Go 程序)
  • 参考链接


一、Go 的项目目录

进行Go语言开发的时候,我们的代码总是会保存在 $GOPATH/src 目录下。
在工程经过go build、go install 或 go get 等指令后,会将下载的第三方包 源代码 文件放在 $GOPATH/src 目录下。
产生的二进制可执行文件放在 $GOPATH/bin 目录下。
生成的中间缓存文件会被保存在 $GOPATH/pkg 下,pkg 存储.a文件,import name,实际是到 GOPATH 中去寻找name.a,使用时是该 name.a 的对应的源码中声明的 package 名字(每个源码的第一行都会声明自己属于哪个包)。

一个Go工程中主要包含以下三个目录:

src:源代码文件
pkg:包文件         
bin:二进制可执行文件

如果我们使用版本管理工具(Version Control System,VCS。常用如Git)来管理我们的项目代码时,我们只需要添加 $GOPATH/src 目录的源代码即可。bin 和 pkg 目录的内容无需版本控制。

1. 适合个人开发者

我们知道源代码都是存放在GOPATH的src目录下,那我们可以按照下图来组织我们的代码。

2. 目前流行的项目结构

Go语言中也是通过 包 来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同包的项目名冲突,我们通常使用顶级域名来作为包名的前缀,这样就不担心项目名冲突的问题了。

因为不是每个个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的github用户名来区分不同的包。

举个例子:张三和李四都有一个名叫studygo的项目,那么这两个包的路径就会是:

import "github.com/zhangsan/studygo"

和

import "github.com/lisi/studygo"

以后我们从github上下载别人包的时候,如:

go get github.com/jmoiron/sqlx

那么,这个包会下载到我们本地GOPATH目录下的 src/github.com/jmoiron/sqlx。

3. 适合企业开发者


二、Go 项目构建及编译(第一个 Go 程序)

学习语言的第一个程序肯定是 hello word 了。

  1. 建立一个 工程文件夹 (好了,这个文件夹是你的一个工程),如 GoProject(添加系统环境变量 GOPATH,内容为GoProject的路径,例如 D:/GoProject。配置GOPATH请参考文章:配置GOPATH)

  2. 在工程文件夹中建立src,pkg,bin文件夹。

  3. 进入 src 目录,在 src 目录下创建一个 hello 文件夹,这个文件夹其实就是一个名为 hello 的 包 ,在 hello 包中创建一个main.go文件:

    package main  // 声明 main 包,表明当前是一个可执行程序
    
    import "fmt"  // 导入内置 fmt 
    
    func main(){  // main函数,是程序执行的入口
        fmt.Println("Hello World!")  // 在终端打印 Hello World!
    }
    
  4. 进入 cmd ,进入 hello 目录,在其中执行:go build(编译)
    这时,Go 编译器会去 GOPATH 的 src 目录下查找你要编译的 hello 项目,编译会得到一个 hello.exe 可执行文件,这时它会保存在执行编译命令的 当前目录 下。
    如果是windows平台,你可以去当前目录下找到 hello.exe 可执行文件。我们在 src>hello 目录下找到了 hello.exe:

    我们还可以使用 -o 参数来指定编译后可执行文件的名字:go build -o hi.exe

  5. 这时,在当前目录下,终端直接执行该 hello.exe 文件:$GOPATHsrchello>hello.exe
    就能运行输出:Hello World!

  6. 现在,我们书接4。实际上,golang的编译使用命令 go build , go install(更多 go 命令及其详解请参考我的另一篇文章:Go 命令)。4中我们已经执行过了go build。
    我们再次执行 go install,然后发现 hello.exe 可执行文件从 src>hello 转移到了目录 bin 中:


    这时去 bin 目录下执行 hello.exe 也可以得到运行结果:

    其实,4,6两个步骤做的事情可以一步到位: 我直接编译 hello 包
    系统编译时 go install packet_name时,系统会到 GOPATH 的 src 目录中寻找 packet_name 目录,然后编译其下的 go 文件:

注意事项:

一个包目录中所有的 go 文件的 package 声明必须相同,所以 main 方法要单独放一个文件,否则在eclipse和liteide中都会报错;

例:假设 test 包中有个 main.go 和 mymath.go,其中 main.go 声明 package 为main,mymath.go声明 packag 为 test;

执行:go install test
报错:can’t load package: package test: found packages main (main.go) and test (mymath.go) in /home/wanjm/go/src/test
(报错说 不能加载package test(这是命令行的参数),因为发现了两个package,分别是main.go 和 mymath.go)


参考链接
  1. 配置GOPATH
  2. 第一个go程序
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号