编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

这些"显眼包",让go开发者更有效率

wxchong 2024-10-26 16:11:10 开源技术 55 ℃ 0 评论

越来越多的开发者现在已经转到Golang,但发现Golang生态不如Java、Python丰富,好多功能都需要重新造轮子。

随着时间的发展,许多Go语言爱好者已经开发并共享了许多Go框架和库。

这些库有不同的功能,为开发者提供了便利。

本文介绍了一些开源库的使用,文末放置了对应库的官方地址。

配置文件相关

  1. Viper:Viper是一个功能强大且灵活的配置库,它支持多种配置文件格式(如JSON、YAML、TOML等),并提供了许多便捷的方法来读取和设置配置项。
  2. Envconfig:Envconfig是一个轻量级的库,它通过环境变量来配置应用程序。它使用结构体标签定义配置项,并从环境变量中自动解析配置。
  3. INI:INI是一个简单的INI文件解析库,它允许你轻松地读取和写入INI格式的配置文件。
  4. go-config:go-config是一个模块化的配置库,它提供了一个统一的API来加载和管理配置。它支持多种配置源(如文件、环境变量、命令行参数等)。
  5. koanf:koanf是一个高性能的配置库,它支持多种配置文件格式,并提供了一套简单而强大的API来读取和设置配置项。
  6. confita:confita是一个简单而灵活的配置加载库,它支持多种配置源(如文件、环境变量、远程存储等),并提供了一组简洁的API来加载和访问配置。

命令行相关

  1. Cobra:Cobra是一个功能丰富的CLI库,提供了创建命令行工具所需的所有基本功能,包括子命令、标志、参数等。
  2. Kingpin:Kingpin是一个简单而灵活的CLI库,使用链式调用语法来定义命令行工具的命令、标志和参数。
  3. urfave/cli:urfave/cli是一个轻量级的CLI库,提供了简单而直观的API来构建命令行工具。
  4. cli:cli是一个简单而易用的CLI库,支持创建命令行工具所需的基本功能。
  5. pflag:pflag是一个命令行标志解析库,提供了对命令行参数的更强大和灵活的处理方式。、

环境变量相关

  1. os 包:Golang的标准库os包提供了访问和操作环境变量的功能。你可以使用os.Getenv()函数来获取特定环境变量的值,使用os.Setenv()函数来设置环境变量的值。
  2. godotenv:godotenv是一个简单而受欢迎的库,用于从.env文件加载环境变量。它可以轻松地将.env文件中定义的键值对加载到环境变量中。
  3. envconfig:envconfig是一个轻量级的库,用于通过结构体标签将环境变量绑定到Go结构体字段。它可以自动将环境变量的值解析为指定的类型,并将其赋给结构体字段。
  4. viper:前面提到的Viper库不仅可以处理配置文件,还可以从环境变量中读取配置。它提供了SetEnvPrefix()方法,可以设置环境变量的前缀,然后使用相同的键名在环境变量中查找配置。

自动化相关

  1. GoReleaser:GoReleaser是一个功能强大的构建和发布工具,专为Go应用程序设计。它可以自动化构建、打包和发布你的应用程序,支持生成各种平台和格式的二进制文件、Docker镜像等。
  2. Mage:Mage是一个简单而灵活的构建工具,使用Go代码来定义和执行构建任务。它提供了一种可读性高且易于维护的方式来编写构建脚本,可以轻松地定义任务、依赖关系和执行顺序。
  3. Task:Task是一个轻量级的构建工具,通过定义任务列表和任务脚本,实现自动化构建和部署。它支持并行执行任务、任务间的依赖关系、条件逻辑等特性。
  4. Makefile:虽然不是一个专门的库,但Makefile在Golang项目中被广泛使用来定义和执行构建任务。Makefile是一个传统的构建工具,可以通过编写Makefile规则来自动化构建过程。

动态编译相关

  1. plugin 包:plugin是Golang的标准库,提供了一种机制来动态地加载和使用插件代码。它允许你将代码编译为插件,并在运行时通过插件接口调用插件功能。
  2. go-plugin:go-plugin是一个用于构建可插拔应用程序的库,它提供了更高级的接口和功能,以简化插件的开发和管理。它基于plugin包,提供了更便捷的API和工具。
  3. yaegi:yaegi是一个Go语言的解释器,可以在运行时动态执行Go代码。它支持将Go代码解析、编译并立即执行,无需预先编译为二进制文件。

Web相关

  1. gin:gin是一个快速而灵活的HTTP Web框架,具有出色的性能和易用性。
  2. echo:echo是一个高性能、简单而易用的Web框架,专注于提供快速和最小化的开发体验。
  3. iris:iris是一个功能丰富、高性能的Web框架,具有强大的路由和中间件支持。
  4. beego:beego是一个全功能的Web框架,拥有强大的开发工具和丰富的生态系统。
  5. chi:chi是一个轻量级、可扩展的Web框架,具有强大的路由和中间件功能。

日期相关

  1. time 包:time是Golang的标准库,提供了用于处理日期、时间和时间间隔的功能。它包含了各种函数和方法,可以进行日期格式化、解析、计算等操作。
  2. dateparse:dateparse是一个简单而灵活的日期解析库,可以从字符串中解析出日期和时间。它支持多种日期格式,并且可以自动识别常见的日期和时间表示方式。
  3. carbon:carbon是一个强大而简单的日期时间处理库,提供了丰富的方法来处理日期和时间。它支持日期格式化、解析、计算、时区转换等功能。
  4. now:now是一个功能齐全的日期和时间处理库,具有简洁的API和易于使用的功能。它支持日期格式化、解析、计算、时区转换等操作。

数据库相关

  1. database/sql 包:database/sql 是Golang的标准库,提供了通用的接口来连接和操作关系型数据库(如MySQL、PostgreSQL等)。它支持执行SQL查询、事务处理、连接池管理等功能。
  2. gorm:gorm是一个功能强大的ORM(对象关系映射)库,提供了简单而灵活的API来操作关系型数据库。它支持多种数据库驱动,并提供了丰富的查询、关联、事务等功能。
  3. mongo-go-driver:mongo-go-driver是MongoDB官方提供的官方驱动程序,用于连接和操作MongoDB数据库。它提供了一套完整的API,支持文档存储、查询、索引、聚合等功能。
  4. redis:redis是一个快速的键值存储数据库,go-redis是与Redis交互的常用库。它提供了简单而强大的API,用于连接、查询和操作Redis数据库。
  5. dgraph:dgraph是一个分布式图数据库,提供了用于连接和操作dgraph的官方Golang客户端库。它支持复杂的图查询和事务处理等功能。

微服务相关

  1. Go Micro:Go Micro是一个用于构建微服务的框架,提供了服务发现、负载均衡、消息传递等功能。它支持多种传输协议和数据序列化方式。
  2. gRPC:gRPC是一个高性能的远程过程调用(RPC)框架,支持多种编程语言。它使用Protocol Buffers作为接口定义语言,并提供了强大的代码生成工具。
  3. kit:Go kit是一个轻量级的微服务工具集,提供了许多组件和工具,用于处理服务发现、负载均衡、日志记录等常见的微服务模式。
  4. Kratos:Kratos是Bilibili开源的微服务框架,基于Protobuf和HTTP协议,提供了服务注册、配置管理、调用链追踪等功能。
  5. nats:nats是一个轻量级、高性能的消息传递系统,可用于构建异步、分布式的微服务架构。

web爬虫

  1. colly:colly是一个简单而强大的Web爬虫框架,提供了便捷的API来构建爬虫应用程序。它支持高度定制化的请求、数据提取、并发控制等功能。
  2. goquery:goquery是一个类似于jQuery的选择器库,用于解析和查询HTML文档。它提供了一套简洁的API,可用于从HTML中提取信息。
  3. gocrawl:gocrawl是一个可扩展的分布式Web爬虫库,适用于大规模的爬取任务。它提供了灵活的配置选项和回调函数,可用于自定义爬取行为。
  4. pholcus:pholcus是一个开源的分布式爬虫软件,具有高度可配置和可扩展的特点。它提供了可视化的操作界面和强大的爬取功能。

自动重试

  1. retry:retry是一个简单而灵活的重试库,提供了多种重试策略和自定义选项。它可以用于任何需要重试的场景,如网络请求、数据库操作等。
  2. backoff:backoff是一个支持指数退避的重试库,根据指定的退避策略进行重试。它提供了可定制的参数,用于控制重试次数、退避时间等。
  3. go-retryablehttp:go-retryablehttp是一个HTTP客户端库,支持自动重试失败的HTTP请求。它提供了可配置的重试策略、错误判断和回调函数等功能。
  4. goretry:goretry是一个简单的重试库,提供了基本的重试功能,包括重试次数、重试间隔等设置。

优雅启停

  1. graceful:graceful是一个用于优雅地重启和停止HTTP服务器的库。它通过在新的子进程中启动新的服务器,然后平滑地切换流量,实现了零停机重启。
  2. air:air是一个热重载开发服务器,它可以在代码修改时自动重新编译和重启应用程序。它提供了实时的代码变更监测和自动构建功能,支持零停机重启。
  3. gin-bin:gin-bin是一个用于开发和部署Gin框架应用的工具,它支持零停机重启。它可以监控文件的变化并自动重新编译和重启应用程序。

定时任务

  1. time 包:time 是Golang的标准库,提供了基本的时间和定时功能。你可以使用time.NewTicker()函数创建一个定时器,然后使用time.Tick()函数或者time.After()函数获取定时触发的时间通道。
  2. cron:cron是一个基于时间表达式的定时任务调度库。它允许你定义和管理按照预定时间运行的任务,并支持秒级、分钟级、小时级等精确度的定时任务调度。
  3. go-cron:go-cron是一个简单易用的定时任务调度库,基于cron表达式来执行定时任务。它提供了简洁的API和灵活的任务配置选项。
  4. ticktock:ticktock是一个高性能的定时任务调度库,适用于大规模和高频率的定时任务场景。它支持并发执行任务,并提供了可靠的重试机制。

参考地址:

[1] https://github.com/spf13/viper

[2] https://github.com/kelseyhightower/envconfig

[3] https://golang.org/pkg/go/ini/

[4] https://github.com/jinzhu/configor

[5] https://github.com/knadh/koanf

[6] https://github.com/heetch/confita

[7] https://github.com/spf13/cobra

[8] https://github.com/alecthomas/kingpin

[9] https://github.com/urfave/cli

[10] https://github.com/go-ozzo/ozzo-cli

[11] https://github.com/spf13/pflag

[12] https://github.com/joho/godotenv

[13] https://github.com/kelseyhightower/envconfig

[14] https://github.com/goreleaser/goreleaser

[15] https://github.com/magefile/mage

[16] https://github.com/go-task/task

[17] https://www.gnu.org/software/make/manual/make.html

[18] https://golang.org/pkg/plugin/

[19] https://github.com/hashicorp/go-plugin

[20] https://github.com/traefik/yaegi

[21] https://github.com/gin-gonic/gin

[22] https://github.com/labstack/echo

[23] https://github.com/kataras/iris

[24] https://github.com/beego/beego

[25] https://github.com/go-chi/chi

[26] https://golang.org/pkg/time/

[27] https://github.com/araddon/dateparse

[28] https://github.com/golang-module/carbon

[29] https://github.com/jinzhu/now

[30] https://golang.org/pkg/database/sql/

[31] https://github.com/go-gorm/gorm

[32] https://github.com/mongodb/mongo-go-driver

[33] https://github.com/go-redis/redis

[34] https://github.com/dgraph-io/dgo

[35] https://github.com/asim/go-micro

[36] https://github.com/grpc/grpc-go

[37] https://github.com/go-kit/kit

[38] https://github.com/go-kratos/kratos

[39] https://github.com/nats-io/nats.go

[40] https://github.com/gocolly/colly

[41] https://github.com/PuerkitoBio/goquery

[42] https://github.com/PuerkitoBio/gocrawl

[43] https://github.com/henrylee2cn/pholcus

[44] https://github.com/avast/retry-go

[45] https://github.com/cenkalti/backoff

[46] https://github.com/hashicorp/go-retryablehttp

[47] https://github.com/kamilsk/retry

[48] https://github.com/tylerb/graceful

[49] https://github.com/cosmtrek/air

[50] https://github.com/davyxu/gin-bin

[51] https://golang.org/pkg/time/

[52] https://github.com/robfig/cron

[53] https://github.com/rk/go-cron

[54] https://github.com/robfig/ticktock

如果本文对你有用,点个赞吧!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表