Golang三方库
1、github.com/fatih/structs
????????結(jié)構(gòu)體的操作,轉(zhuǎn)map[string]interface{}、判斷零值等;
2、go.uber.org/multierr
????????合并錯(cuò)誤信息;
3、github.com/spf13/viper
????????配置管理,支持Yaml、Json等格式的配置;2. 可以從文件、io、環(huán)境變量、command line中提取配置;支持自動(dòng)轉(zhuǎn)換的類型解析;可以遠(yuǎn)程從etcd中讀取配置。(參考:Go 每日一庫之 viper - Go語言中文網(wǎng) - Golang中文社區(qū))
4、github.com/spf13/cobra/cobra
????????Cobra是一個(gè)用來創(chuàng)建現(xiàn)代命令行應(yīng)用的庫,也是一個(gè)用來生成應(yīng)用和命令文件的腳手架。
// 模擬實(shí)現(xiàn)docker ps功能 package mainimport ("fmt""context""github.com/docker/docker/api/types""github.com/docker/docker/client" // v1.13.1"github.com/spf13/cobra" )func runPs(dockerCli *client.Client) {containers, err := dockerCli.ContainerList(context.Background(), types.ContainerListOptions{})if err != nil {panic(err)}fmt.Println("運(yùn)行中的容器ID:")for _, container := range containers {fmt.Printf("%s \n", container.ID[:10])}}func main() {dockerCli, _ := client.NewEnvClient()// 定義ps命令var cmdPs = &cobra.Command{Use: "ps",Short: "List containers",Run: func(cmd *cobra.Command, args []string) {runPs(dockerCli)},}// 定義根命令var rootCmd = &cobra.Command{Use: "play_docker"}// 加入ps命令rootCmd.AddCommand(cmdPs)// 初始化cobrarootCmd.Execute() }5、net/http/pprof
? ? ? ? golang性能監(jiān)控
6、github.com/jinzhu/copier
????????方便dto、vo、dao之間的相互轉(zhuǎn)換
7、github.com/unknwon/com
一個(gè)小而美的工具包
8、github.com/astaxie/beego/validation
一個(gè)很好用的表單驗(yàn)證庫
-----------------------------------------------------------
1、zap,github.com/uber-go/zap
uber開源的高性能,無反射的日志庫
2、jsoniter,github.com/json-iterator/go
無反射的json的序列化與反序列化工具,相比encoding/json快6倍
3、github.com/panjf2000/ants
goroute池,可以有效控制協(xié)程數(shù)量,防止協(xié)程過多影響程序性能,源碼只有1000行。
4、還有一些可以學(xué)習(xí)的庫如go-redis、go-sql-driver、didi/gendry、golang/groupcache、olivere/elastic/v7
總結(jié)
- 上一篇: 我的常用软件大公开!
- 下一篇: 关系数据库还是NoSQL数据库