分享
  1. 首页
  2. 文章

如何开始写一个go包

wx5cf612fe3a728 · · 2581 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

如何开始写一个go包

  1. 确定代码结构
  2. 命名包
  3. 组织包
  4. 包开发思想
  5. go最佳实践

每一个包都是一个拥有单一责任的简洁的 Go 程序。

1. 确定代码结构

组织方式:按 依赖 + 模块化 划分, 框架代码和业务代码分开, 每一个项目都应该按照固定的组织方式进行实现, 所以确定代码结构至关重要。以下结构是我在项目中使用的结构,自我感觉还不错,供大家参考

├── api
│ ├── grpc 
│ ├── http 
│ └── thrift 
├── cmd
│ └── main.go
├── config
│ └── prd.toml
├── internal
│ ├── app
│ │ └── service
│ │ ├── auth.go
│ │ └── user.go
│ ├── config
│ │ ├── build.go
│ │ ├── config.go
│ │ └── runtime.go
│ └── pkg
│ ├── database
│ │ └── mysql
│ ├── httpclient
│ └── redis
│ └── user.go
├── pkg
│ └── engine
└── vendor

如何开始写一个go包

pkg/engine: 平台代码(提供服务启动、http/grpc 挂载、 redis/db 实例、 httpclient 实例接口)

internal/pkg/database/mysql: 业务代码中 mysql 实现
internal/pkg/redis: 业务代码中 redis 实现
internal/pkg/httpclient: 业务代码中 httpclient 实现

internal/app/service: 业务代码逻辑实现

api/http: 业务代码api协议

参考: https://draveness.me/golang-101

2. 命名包

建议: 小写/简短/自解释
参考: https://blog.go-zh.org/package-names

3. 组织包

建议: 使用多文件,根据功能组织代码
参考: http://simonblog.cn/2018/05/04/Style-guideline-for-Go-packages/

4. 包开发思想

4.1 接受 interface 参数,返回 struct

参考链接: https://studygolang.com/articles/12397

4.2 全局变量和顶层函数

使用全局变量可以简化操作,建议能用则用(可能其他gopher不认同,但从我的使用上来说确实简化了操作,如redis句柄、log都使用了全局变量处理)

5. go最佳实践

参考: https://github.com/llitfkitfk/go-best-practice


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:wx5cf612fe3a728

查看原文:如何开始写一个go包

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2581 次点击 ∙ 1 赞
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏