Go项目架构和编译

本文详细介绍了Go项目的结构,包括个人开发者、流行结构和企业开发场景的适用方式,并阐述了Go文件的编译运行过程,包括三种编译方式。此外,还深入讲解了如何进行Go语言的跨平台编译,覆盖了Mac、Linux和Windows之间的交叉编译实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Go项目结构

1. 适合个人开发者

 2. 目前流行的项目结构

 3. 适合企业开发场景

Go文件编译

1.文件编译运行

方式1:

方式2:

 方式3:

Go跨平台编译

1.Mac 下编译 Linux 和 Windows平台 64位 可执行程序:

2.Linux 下编译 Mac 和 Windows 平台64位可执行程序:

3.Windows下编译Mac平台64位可执行程序:

4. 在win平台上编译成linux平台可执行文件

Go项目结构

在进行Go语言开发的时候,我们的代码总是会保存在$GOPATH/src目录下。在工程经过go buildgo installgo get等指令后,会将下载的第三方包源代码文件放在$GOPATH/src目录下, 产生的二进制可执行文件放在 $GOPATH/bin目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。

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

1. 适合个人开发者

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

 2. 目前流行的项目结构

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

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

 

 3. 适合企业开发场景

Go文件编译

1.文件编译运行

方式1:

第一步: go mod init 目录名

 产生上图中序号1文件:go.mod

第二步目录下:  go build

 产生上述图中序号2文件:helloworld

第三步运行:编译后文件

 拓展:

我们还可以使用-o参数来指定编译后得到的可执行文件的名字。

# go build -o 编译后文件名
windows平台:
    go build -o heiheihei.exe
macos平台:
    go build -o heiheihei

方式2:

go run 文件名.go

 方式3:

直接右键运行

Go跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

只需要指定目标操作系统的平台和处理器架构即可:

  1. SET CGO_ENABLED=0 // 禁用CGO

  2. SET GOOS=linux // 目标平台是linux

  3. SET GOARCH=amd64 // 目标处理器架构是amd64

1.Mac 下编译 Linux 和 Windows平台 64位 可执行程序:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

2.Linux 下编译 Mac 和 Windows 平台64位可执行程序:

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

3.Windows下编译Mac平台64位可执行程序:

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

4. 在win平台上编译成linux平台可执行文件

SET CGO_ENABLED=0 // 禁用CGO

SET GOOS=linux // 目标平台是linux

SET GOARCH=amd64 // 目标处理器架构是amd64
go build

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值