pkg
pkg copied to clipboard
golang pkg, common utils
pkg
- [x] golang pkg, common utils
- [x] 集成各种常用 lib, 开箱即用
related:
- https://github.com/better-go/cookiecutter-go
go 微服务: 项目创建脚手架.
quickstart:
- ✅ 使用 go.work 拆分子包
- log
- database
- x/gin
- x/go-zero
- x/go-micro
快速导包:
- ✅ 导入包:
import (
// 子包
"github.com/better-go/pkg/log"
)
- ✅ install:
# use latest version:
go get -u -v github.com/better-go/pkg
# use specific tag:
go get -u -v github.com/better-go/[email protected]
- ✅ usage:
import (
"github.com/better-go/pkg/random"
)
func Example() {
// snowflake id:
userID := random.SnowFlakeID()
fmt.Printf("userID:%v\n", userID)
}
features:
- [x]
log: log/log.go 集成uber.log, 开箱即用. - [x] sync/async:
go func()优雅异步. - [x]
retry: 通用重试wrap: 支持 backoff - [x]
orm集成:gorm扩展- mysql 支持
- 集成
gorm v1, v2版本
- [x]
cache: 集成redis - [x]
mq:- [x] kafka: 集成
kafka - [x] rabbitmq: 集成
rabbitmq, 有详细使用示例代码- 生产者: mq/rabbitmq/producer.go
- 消费者: mq/rabbitmq/consumer.go
- [x] kafka: 集成
- [x]
net:- [x] http: 集成
gin+authAPI 路由鉴权 - [x] websocket: 集成
websocket, 双向通信, 有详细使用示例代码- server: net/ws/websocket_server.go
- usage: net/ws/example/ws_server.go
- server: net/ws/websocket_server.go
- [x] socketIO: 类似
websocket, 双向通信, 有详细使用示例代码- server:
- usage: net/ws/example/socket_io/socket_io_server.go
- server:
- [x] graphql: 集成
- client: net/graphql/graphql_client.go
- server: net/graphql/graphql_server.go
- [x] http: 集成
- [x]
config:- [x] toml 格式配置文件读取
- [x]
random:- [x]
uuid: ID 生成器 - [x]
snowflake: twitter 雪花算法: 18位纯数字(有序+递增+唯一)
- [x]
- [x]
text:- [x] xss: 预防 xss 校验
- [x]
time: 大量时间方法扩展- 生成时间戳
- [x] container: 扩展数据类型
- dict: 字典数据类型
- StringDict:
map[string]string扩展, 支持生成url encode string - Dict:
map[string]interface{}扩展
- StringDict:
- dict: 字典数据类型
- [x] convert: 数据格式转换工具
- string:
string to int,int to string - struct:
struct转换成map[string][]string - map:
map[string][]string转换成map[string]string
- string:
- [x] crypto`: 加密/解密工具
- [x] signature: 通用签名机制: 生成/验证 - 支持
md5/sha256/sha512+nonce+ts - [x] password: 密码: 加密/验证 - 使用
bcrypt算法
- [x] signature: 通用签名机制: 生成/验证 - 支持
- [x]
com: 第三方企业 API SDK 接入- [x] jpush: 极光推送
- [x] sendcloud: 搜狐短信服务
- [x] cronjob: 集成
cron job库, 开箱即用,- 使用示例: cronjob/example/example.go
- [x]
x: 扩展一些框架- [x]
gin: 扩展代码- 路由 wrap: x/gin/router.go 自动处理 request args binding 和 response
- [x]
go-micro: - [x]
go-zero:- [x] 微服务启动器: x/go-zero/cmd/cmd.go
- [x]
wiki:
- https://github.com/better-go/pkg/wiki
- go 编程规范
development:
- setup:
# required tool:
brew install go-task/tap/go-task
# this project root folder:
cd pkg/
# init:
task init
# get go pkg:
task tidy
reference:
- uber.log
- 目录结构参考: https://github.com/micro/go-plugins
- 目录风格, 参考 go 标准库, 以及
x库- https://pkg.go.dev/search?q=golang.org/x
- https://github.com/golang/text
go get golang.org/x/text
go get golang.org/x/oauth2
go get golang.org/x/net
go get golang.org/x/crypto
research:
- https://go.libhunt.com/
- go pkg diff