pkg icon indicating copy to clipboard operation
pkg copied to clipboard

golang pkg, common utils

pkg

Go Version Go Report Card Release Date MIT License Stars

  • [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] net:
    • [x] http: 集成 gin + auth API 路由鉴权
    • [x] websocket: 集成 websocket, 双向通信, 有详细使用示例代码
      • server: net/ws/websocket_server.go
        • usage: net/ws/example/ws_server.go
    • [x] socketIO: 类似 websocket, 双向通信, 有详细使用示例代码
      • server:
        • usage: net/ws/example/socket_io/socket_io_server.go
    • [x] graphql: 集成
      • client: net/graphql/graphql_client.go
      • server: net/graphql/graphql_server.go
  • [x] config:
    • [x] toml 格式配置文件读取
  • [x] random:
    • [x] uuid: ID 生成器
    • [x] snowflake: twitter 雪花算法: 18位纯数字(有序+递增+唯一)
  • [x] text:
    • [x] xss: 预防 xss 校验
  • [x] time: 大量时间方法扩展
    • 生成时间戳
  • [x] container: 扩展数据类型
    • dict: 字典数据类型
      • StringDict: map[string]string 扩展, 支持生成 url encode string
      • Dict: map[string]interface{} 扩展
  • [x] convert: 数据格式转换工具
    • string: string to int, int to string
    • struct: struct 转换成 map[string][]string
    • map: map[string][]string 转换成 map[string]string
  • [x] crypto`: 加密/解密工具
    • [x] signature: 通用签名机制: 生成/验证 - 支持 md5/sha256/sha512 + nonce + ts
    • [x] password: 密码: 加密/验证 - 使用 bcrypt 算法
  • [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

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