0
点赞
收藏
分享

微信扫一扫

Golang三方库


1、github.com/fatih/structs

        结构体的操作,转map[string]interface{}、判断零值等;

2、go.uber.org/multierr

        合并错误信息;

3、github.com/spf13/viper

        配置管理,支持Yaml、Json等格式的配置;2. 可以从文件、io、环境变量、command line中提取配置;支持自动转换的类型解析;可以远程从etcd中读取配置。(参考:​​Go 每日一库之 viper - Go语言中文网 - Golang中文社区​​)

4、github.com/spf13/cobra/cobra

命令行应用的库,也是一个用来生成应用和命令文件的脚手架。


// 模拟实现docker ps功能
package main

import (
"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("运行中的容器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)
// 初始化cobra
rootCmd.Execute()
}


5、net/http/pprof

        golang性能监控

6、github.com/jinzhu/copier

        方便dto、vo、dao之间的相互转换

7、github.com/unknwon/com

一个小而美的工具包

8、github.com/astaxie/beego/validation

一个很好用的表单验证库

9、github.com/crossplane/crossplane-runtime/pkg/fieldpath

控制平面的k8s controller工具包

10、github.com/AlecAivazis/survey/v2

交互式cli的包

11、k8s/api包

主要包括 内建资源对象的定义和注册

12、k8s/apimachinery包

主要包括 客户端和服务端的公共库,包括TypeMeta,ObjectMeta,Scheme(type和GVK的映射),RestMapper(GVR和GVK的映射),encoding,decoding,版本转换等

13、github.com/olivere/elastic和github.com/elastic/go-elasticsearch 

elasticsearch 使用 REST 接口的分布式搜索引擎,提供强大的全文搜索功能。

14、"github.com/hashicorp/consul/api"

consul是一个分布式高可用的Key-value存储系统(类似etcd和zookeeper),数据在consul中以KV格式存储,且有webui。

15、“github.com/davecgh/go-spew/spew"

格式化输出工具,

  • Dump() 标准输出到os.Stdout
  • Fdump() 允许输出到自定义io.Writer
  • Sdump() 输出的结果作为字符串返回

16、github.com/json-iterator/go

陶师傅的json序列化反序列包,只需要加一句就可以,提升2-3倍

var json = jsoniter.ConfigCompatibleWithStandardLibrary

err := json.Unmarshal(datautil.String2bytes(originData), &fieldMap)

17、github.com/spf13/viper

这是一个完整的 Go 应用程序配置解决方案,包括 12-Factor 应用程序。它专为在应用程序中工作而设计,可以处理所有类型的配置需求和格式。 该软件包的一些巧妙功能包括: 从 JSON、TOML、YAML、HCL、.env 和 Java 属性配置格式中读取;实时观看和重读配置文件;从环境变量中读取。

18、github.com/golang-module/carbon/v2

这是一个很棒的轻量级、易于使用且语义智能的日期时间库,适用于 Go 开发人员。

package main

import (
"fmt"

"github.com/golang-module/carbon/v2"
)

func main() {
// 时间日期
datetime := carbon.Now().ToDateTimeString()
fmt.Printf("datetime: %v\n", datetime)
// datetime: 2022-11-09 09:38:42

// 日期
date := carbon.Now().ToDateString()
fmt.Printf("date: %v\n", date)
// date: 2022-11-09

// 时间
time := carbon.Now().ToTimeString()
fmt.Printf("time: %v\n", time)
// time: 09:38:42

}

19、github.com/bytedance/sonic

高性能的json序列化和反序列化库,在泛型编解码、大数据量级场景下的性能比json-iterator更好

20、github.com/go-resty/resty/v2

​resty​​​是 Go 语言的一个 HTTP client 库。​​resty​​功能强大,特性丰富。它支持几乎所有的 HTTP 方法,并提供了简单易用的 API。

-----------------------------------------------------------

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池,可以有效控制协程数量,防止协程过多影响程序性能,源码只有1000行。

4、还有一些可以学习的库如​​go-redis​​​、​​go-sql-driver​​​、​​didi/gendry​​​、​​golang/groupcache​​​、​​olivere/elastic/v7​

举报

相关推荐

0 条评论