拾遗:Go 代码结构
#define @ $
概述
- Go 编码通常将所有代码放置在同一个工作区
- 一个工作区包含多个版本仓库,使用 Git 等工具控制
- 每个仓库包含一个或多个包
- 每个包由同一目录中的一份或多份源代码组成
- 包的路径决定了其对应的 import 路径
工作区
目录结构
- src 放置 Go 源代码
- pkg 放置 package
- bin 放置可执行程序
go 工具编译生成的文件将放置在 pkg 及 bin 目录下,pkg 目录结构会根据 src 目录结构自动生成;通常在 src 目录下子目录中建立 Git 仓库
GOPATH 环境变量
- 使用 go env 获取当前的所有的 go 环境变量,也可以使用 go env GOPATH 查询单个变量的值
- 若未设置 GOPATH 变量,则默认与 GOROOT 变量的值相同
- 设置 go 变量
- export GOPATH=@HOME/GO
- export PATH=@PATH:@GOPATH/bin
import path
- import path 用于唯一标识一个 package,package 的导入路径由它在本地工作区或远程 Git 仓库中的位置决定
- 标准库中的 package 导入通常使用短路径,如: fmt、net/http 等
- 如果将源代码放置在远程仓库中,那么 base path 建议设置为 github.com/kt10 之类的格式
- 安装 go 程序至工作区的 bin 目录:go install github.com/kt10/hello,可以在任意目录执行(GOPATH 或 GOROOT 已设置),若已在 hello 目录中,可直接执行 go install
- 不含 main 或 init 函数的代码,将打包成 .a 文件,作为库文件安装到 pkg 目录下(目录结构与源码对应),以 import github.com/kt10/xxx 的形式在其它代码中使用
- Go 程序都是静态链接的,可不依赖库文件独立运行
- 可独立运行的 Go 程序都必须 package main
- 系统范围内的 package 名称可重复,只要 import 导入的功能模块路径不重复即可
- 下载安装远程仓库中的包: go get github.com/golang/example/hello
拾遗:Go 代码结构的更多相关文章
- 【Learning Python】【第四章】Python代码结构(一)
这一章的主旨在于介绍python的代码结构 缩进 在很多的编程语言中,一般{}用于控制代码块,比如以下的一段C代码 if(var <= 10) { printf("....." ...
- 《OOC》笔记(4)——自动化地将C#代码转化为C代码(结构版)
<OOC>笔记(4)——自动化地将C#代码转化为C代码(结构版) 我在<C表达面向对象语言的机制——C#版>中已经说明了从C#到C的转换方法.这次看<OOC>也是想 ...
- To IOC,代码结构演变的随想
代码结构演变 项目开始阶段 需求: 提供一个系统,可以在新春佳节之际以邮件的形式给员工发送新春祝福. 开发人员: 张三 版本一 string msg = "新年快乐!过节费5000.&quo ...
- CEF3开发者系列之工程和代码结构
CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的设计思想就是易用且兼顾性能. CEF3支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的 ...
- storm源码之storm代码结构【译】【转】
[原]storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正 ...
- atitit js 开发工具 ide的代码结构显示(func list) outline总结
atitit js 开发工具 ide的代码结构显示(func list) outline总结 eclips环境::4.3.1 #-------需要一个js开发工具,可以显示outline或者代码结构显 ...
- PHPWind 8.7中代码结构与程序执行顺序
pw9在此不谈,他是完全重构的作品,是完全MVC下的体系.当然,其中很多东西在PW8.7下已经可见端倪. 主要代码结构 1. 以现代的观点,PW是多入口应用模式,程序根目录下的文件几乎都是入口: 2. ...
- Javascript的一种代码结构方式——插件式
上几周一直在做公司的webos的前端代码的重构,之中对javascript的代码进行了重构(之前的代码耦合严重.拓展.修改起来比较困难),这里总结一下当中使用的一种代码结构——插件式(听起来怎么像独孤 ...
- django-cms 代码研究(五)深入(代码结构)
前言: 前戏已经做得比较充分了,下面我们开始步入正题. 代码结构: cms |--admin (猜测是admin界面的二次开发和改良) |--cache (猜测是缓存机制的处理) |--extensi ...
- 【原】storm源码之storm代码结构【译】
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...
随机推荐
- 项目集成swagger,并暴露指定端点给swagger
项目集成swagger 一:思考: 1.swagger解决了我们什么问题? 传统开发中,我们在开发完成一个接口后,为了测试我们的接口,我们通常会编写单元测试,以测试我们的接口的可用性,或者用postm ...
- Linux命令之解压
Linux命令之解压 使用tar命令解压.zip文件的时候,遇到如下异常, tar -xzvf guangwang.zip gzip: stdin has more than one entry--r ...
- javsscript闭包的一种使用场景--沙箱
//沙箱:模块化,沙箱是一个隔离的环境,最大的好处就是避免全局变量的污染. var model = (function () {//一个匿名的立即执行函数 var price = 900;//这是 ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...
- 关于软件IntelliJ IDEA的使用技巧(三)
二,IntelliJ IDEA的工具栏介绍 2,IntelliJ IDEA菜单栏 (9)Tools工具 ✌1.Tasks & Contexts: ✌2.Generate JavaDoc: ✌3 ...
- SQL必知必会——思维导图
Xmind实在太坑了,竟然不能导出高清图片,我回来折腾个PS整一下!
- 分布式-技术专区-Redis并发竞争key的解决方案详解
Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿.缓存雪崩.缓存和数据一致性,以及今天要谈到的缓存并发竞争.这里的并发指的是多个redis的clie ...
- Jmeter服务器性能压测-用户登录实例CSV方式
为什么用CSV方式压测,因为用jdbc链接数据库,我发现数据库数据量量大的情况下,Jmeter会内存溢出 第一步:数据准备,根据登录接口需要的参数准备测试数据 例子中,测试的登录接口需要4个参数化数据 ...
- 利用Process类创建多个子进程对象执行任务,主进程负责调度
import time from multiprocessing import Process def run1(): for i in range(5): print("sunck is ...
- vue 插槽 slot
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...