当前位置:网站首页>环境准备 - 工程管理
环境准备 - 工程管理
2022-06-29 06:41:00 【qazw9600】
说明
- 工程管理即项目管理,go语言中提供了工作区管理,源码管理,第三方依赖库管理等规范。
- go是工程语言,不像学院语言那么自由,对工程管理做了一些规范。
工作区(workspace)管理
- go语言编程,并不是随便创建一个目录就能作为工作目录,因为依赖文件的查找和中间、目标文件的生成,以及可执行文件的安装,go对工作区的目录结构以及工作区的指定有一定规范。
- 当然如果工程只有单个源码文件或者多个文件但是导入包路径按绝对路径写死也是可以编译的,但是不建议这样做。
查看和设置
- go环境安装好后会设置默认的工作区,并且在该目录下创建好默认的目录结构,linux下为~/go/。
- go通过GOPATH环境变量设置工作区路径,可以手动对其修改,但是修改后需要手动创建这些子目录。
- 查看
go env GOPATH
- 设置
export $GOPAHT=/xxx/xxx
- 注意:GOPATH可以设置多个,但是如果设置了多个路径,需要设置GOBIN环境变量来确定可执行文件放在哪个目录。
目录结构
- 工作区包含3个子目录。
- src目录:存放项目源码,一个项目分为一个子目录, go get下载的第三方包也放在该目录。
- pkg目录:存放经由go install命令构建安装的“.a”归档文件。
- bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。
发展和改进
- GOPATH机制比较原始和简单,在发展过程中体现出了一些不足之处,例如:
- 代码必须放在GOPATH路径下的src目录中,不然,导入工程内的包会提示查找不到。
- 依赖包需要手动管理,没有版本号信息等。
- …
- 官方的管理机制也在不断改善 ,经历了GOPATH、go vendor,当前官方最新和主流的机制是go mod。
源码和第三方依赖库管理
- go源码和第三方依赖库都采用源码包的形式进行组织和管理。
工程示例
- 创建工程
- 早期创建新工程需要在工作区的src目录下,但是采用go mod机制不需要,可以在任意目录创建。
- 创建一个工程根目录,例如:example,将代码都放在该根目录下。
- 编译和安装
- 编译需要在该工程根目录下执行“go build”命令,go编译器会自动推导依赖,编译出的可执行文件名就是工程名。
- 安装需要在同样的目录执行“go install”,go 编译器会将生成的文件放置到工作区的bin和pkg下。
- 单文件程序也可以直接编译该文件,如下:
go build xxx.go
边栏推荐
- 反思 - 完美主义
- Concurrent idempotent anti shake
- Perceiving healthy life, enabling boundless connection -- contributing to openharmony 3.1 ecological construction
- matlab simulink 电网扫频仿真和分析
- 小白大战指针 (上)
- Prompt during packaging: property 'sqlsessionfactory' or 'sqlsessiontemplate'‘
- Protobuf 二进制文件学习及解析
- Cross domain data request using jsonp
- cv2.cvtColor
- [量化投资系统]Django从数据库中实现筛选及分页
猜你喜欢

呕心沥血总结出来的MySQL常见错误以及解决方法(二)

C实战——高配版贪吃蛇游戏设计

Viewing application and installation of Hana database license

ShapeShifter: Robust Physical Adversarial Attack on Faster R-CNN Object Detector

Prompt during packaging: property 'sqlsessionfactory' or 'sqlsessiontemplate'‘

Vulnhub's dc7 target

Dump (cl\alv\tree\base================================cp|set\items\for\column) when expanding node or clicking toolbar button

【工控老马】基于西门子S7-200PLC的跑马灯控制系统的设计方案详解

基于Sophus的Ceres优化

【深度之眼吴恩达机器学习作业班第四期】Regularization正则化总结
随机推荐
tf. compat. v1.global_ variables
719. find the distance of the number pair with the smallest K (two points)
【深度之眼吴恩达机器学习作业班第四期】Regularization正则化总结
Using cdockablepane to realize floating window in MFC
Appium 环境搭建
matlab 多普勒效应产生振动信号和处理
多态中的向上和向下转型
Vulnhub's dc9 target
[FreeRTOS] interrupt mechanism
反思 - 中小公司项目管理思维 - 先将产品做出来,先将功能做出来
Explanation of swing transformer theory
[量化投资系统]Django从数据库中实现筛选及分页
Schnuka: 3D visual recognition system 3D visual inspection principle
from xx import*等价于from xx import *,不一定要加空格
Appium environment setup
SVM,人脸识别遇到的问题及解决方法
Roblox剑九之剑二
498. diagonal traversal (simulation)
数组知识点小结
matlab simulink 电网扫频仿真和分析