Go项目两种结构详解与案例

数字觅云使
• 阅读 262

Go项目两种结构

go 项目的目录结构没有一个官方的标准,但是有一些社区推荐的实践和约定。一般来说,go 项目的目录结构可以分为两种类型:

结构化目录

├── build                   # 打包和持续集成
│   ├── docker              # Docker 镜像
│   ├── package             # 打包脚本
│   └── release             # 发布脚本
├── cmd                     # 主应用
│   └── myapp               # 应用入口
│       └── main.go         # main 函数
├── configs                 # 配置文件
│   └── config.yaml         # 配置文件模板或默认值
├── docs                    # 文档
├── init                    # 系统初始化(systemd, upstart, sysv)
│   └── myapp.service       # systemd 服务文件
├── internal                # 私有应用代码库
│   ├── app                 # 应用层
│   │   └── handler         # 处理器层
│   ├── biz                 # 业务逻辑层
│   ├── data                # 数据访问层
│   ├── pkg                 # 公共库代码
│   └── service             # 服务层
├── scripts                 # 脚本
│   ├── coverage.sh         # 测试覆盖率脚本
│   ├── lint.sh             # 代码质量检查脚本
│   └── test.sh             # 测试脚本
├── test                    # 测试数据或文件
├── third_party             # 第三方依赖(如 swagger ui)
├── Makefile                # Makefile 文件
├── go.mod                  # go mod 文件
└── README.md               # README 文件

平铺式目录

├── example                 # 示例代码
│   └── main.go             # 示例入口
├── foo.go                  # foo 包代码
├── bar.go                  # bar 包代码
├── go.mod                  # go mod 文件
└── README.md               # README 文件
本文参与了1024 程序员节活动,欢迎正在阅读的你也加入。
点赞
收藏
评论区
推荐文章
科工人 科工人
4年前
聊聊golang的DDD项目结构
序本文主要研究一下golang的DDD项目结构interfacesfoodappserver/interfacesinterfacesgit:(master)tree.|____fileupload||____fileformat.go||____fileupload.go|____food_handler.go|__
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
喷火龙 喷火龙
4年前
Golang duck typing(鸭子类型)的概念
“像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子”描述事物的外部行为而非内部结构严格说go属于结构化类型系统,类似docktyping先看一个其他语言中的ducktyping:python中的ducktypingdefdownload(retriever):returnretriever
Wesley13 Wesley13
3年前
Go项目的目录结构
项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性1、一般的,一个Go项目在GOPATH下,会有如下三个目录:|bin|pkg|src其中,bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项
Wesley13 Wesley13
3年前
PHP项目目录结构
PHP项目目录结构原创 2017年11月23日16:02:18标签:php(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fso.csdn.net%2Fso%2Fsearch%2Fs.do%3Fq%3Dphp%26t%3Dblog) /
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Golang的项目目录结构
1.简单型的项目目录结构如果我们只是开发一个小应用或者做一些简单的测试,那么完全没有必要根据官方的建议建立各种目录,只需要要一个文件夹中放置我们的源码文件,然后直接运行gobuild就可以,例如:gobuildhello.go然后编译器就会在当前目录下面生成一个hello.exe文件。我们
Stella981 Stella981
3年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(