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

        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。

21、github.com/gorilla/mux

常用的http路由库

22、github.com/codegangsta/negroni

常用的go web中间件

23、github.com/elliotchance/pie

封装了对slice和map的常用操作,能满足工作中的大部分需求。比如计算切片的交集、差集;对切片中元素按条件过滤的Filter函数;对切片中元素进行数据转换的Each、Map函数等。

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

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-redisgo-sql-driverdidi/gendrygolang/groupcacheolivere/elastic/v7

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值