Golang 项目目录结构组织

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

内容简介:其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。当然,首先要说的是环境变量GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPATH中,多个项目用";"分隔。Golang项目目录下一般有三个子目录:

其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。

当然,首先要说的是环境变量GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPATH中,多个项目用";"分隔。

Golang项目目录下一般有三个子目录:

src存放源代码

pkg编译后生成的文件

bin编译后生成的可执行文件

我们重点要关注的其实就是src文件夹中的目录结构。

举个例子比啥都强,目录结构如下:

<proj>
   |--<src>
       |--<a>
           |--<a1>
               |--al.go
           |--<a2>
               |--a2.go
       |--<b>
           |--b1.go
           |--b2.go
       |--<c>
           |--c.go
   |--<pkg>
   |--<bin>

各文件代码:

a1.go

package a1

 import "fmt"
 
 func PrintA1(){
    fmt.Println("a/a1")
 }

a2.go

package a2
 
import "fmt"
 
func PrintA2(){
   fmt.Println("a/a2")
}

b1.go

package b

 import "fmt"
 
 func printB1(){
    fmt.Println("b.b1")
 }

b2.go

package b
 
 import "fmt"
 
 func PrintB(){

    printB1()
    fmt.Println("b.b2")
 }

注意b1.go b2.go中的包并且是相同的,也就是说同一个目录下面只允许一个包

emmmm.go

package main
 
 import(
    "a/a1"
    "a/a2"
    "b"
 )
 func main(){
    a1.PrintA1()
    a2.PrintA2()
    b.PrintB()
 }

将proj加入$GOPATH:

Golang 项目目录结构组织

在windows下有个问题要注意,就是中文路径问题,如果proj路径有中文,那么在编译的时候可能出问题,我被这个问题折磨了半个多小时,左右挑不出错,就是不能编译。

go build a/a1
go install a/a1
go build a/a2
go install a/a2
go build b
go install b

go build c
go install c

执行相关命令。

可以看到pkg文件夹下生成了,a文件夹、b.a,a文件夹下有a1.a、a2.a

bin文件夹下有c.exe(当然,在执行go build c的位置也存在c.exe)

运行下c.exe

Golang 项目目录结构组织

可以看出,分门别类,非常清楚。

其实b文件夹下的两个.go文件完全可以合并成一个的,没有任何影响。

package中的名称最好与目录名一样,这样在import的时候直接import目录名就好了。如果两者不一致,例如上面的b1.go、b2.go里面的package是package bbbbb,则在c.go里import的时候要import "b",然后下面的b.PrintB(),则需要改为bbbbb.PrintB()

文章转载自: https://www.cnblogs.com/ghgyj/p/4051768.html


以上所述就是小编给大家介绍的《Golang 项目目录结构组织》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

The Black Box Society

The Black Box Society

Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00

Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换