首页 > 其他分享 >常用go开发包

常用go开发包

时间:2023-01-13 09:11:50浏览次数:60  
标签:Web 常用 框架 应用程序 Go 构建 开发包 go

前言

随着时间的推移,语言爱好者已经构建和共享了许多 Go 框架和库。这些包执行不同的功能,从开发微服务到制作 discord 机器人,一直到构建 Web 应用程序!在本文中,我将尝试让您熟悉一些有用的方法,这些方法是我在尝试使用这种有趣的新编程语言学习和构建应用程序时发现的。

这绝不是一个详尽的列表,而是一个我喜欢并认为有趣的软件包列表,分享给大家。

相关推荐

在此篇文章之前,我个人也写了一些关于Go不错的开源工具总结,这里一一罗列一下:

  1. 使用Go开源的一款性能监控软件
  2. 使用 Go + HTML + CSS + JS 构建漂亮的跨平台桌面应用
  3. 实战—Go程序分析利器pprof
  4. 初学Go 值得深研的7大开源项目
  5. Go开发微信小程序SDK推荐
  6. 适用于快速开发应用的Golang二次框架

静态网站生成

对于通常用于构建后端 API 和微服务的编程语言来说,这是一个相对较新的领域,因此有点新鲜感迫在眉睫。

  1. hugo:一个很棒的包,可以让你在没有后端互连的情况下构建静态网站,全部用 Go 编写。它还号称是同类中最快的静态 Web 框架,每页加载时间<1 毫秒,平均网站构建时间不到一秒。它旨在适用于任何类型的网站,包括博客和托管文档。最棒的是,您也可以在GitHub 页面上免费托管您的静态网站!安装 Hugo 包可以通过常规的自制软件安装、Docker甚至go install命令来完成。

处理配置文件

配置文件通常以各种格式编写,例如 JSON 和 YAML。Go 有一个非常有用的包,可以让读写各种配置文件格式变得轻而易举。

  1. viper:这是一个完整的 Go 应用程序配置解决方案,包括 12-Factor 应用程序。它专为在应用程序中工作而设计,可以处理所有类型的配置需求和格式。

该软件包的一些巧妙功能包括:

  • 从 JSON、TOML、YAML、HCL、.env 和 Java 属性配置格式中读取。
  • 实时观看和重读配置文件。
  • 从环境变量中读取。

命令行界面

对于构建 CLI 应用程序,Go 有一个很棒的库,让这一切变得轻而易举。

  1. Cobra:一个强大的库,用于创建基于 Go 的 CLI 应用程序。

该框架的一些重要功能包括:

  • 它与配置文件的 Viper 库有强大的集成。
  • 它支持常规子命令、嵌套子命令,并有助于对相似命令进行分组。
  • 完全符合 POSIX 标准的标志(包括短版和长版)。

环境变量

Go有许多软件包可以.env更轻松地读取存储各种被视为应用程序机密的文件。有这样伟大一个工具:

  1. GoDotEnv:它拥有从.env文件中读取变量的最简单的设置和用法,并且使用起来也非常轻巧。

构建自动化

旨在通过简单、简洁的命令帮助执行任务的自动化工具。您可能已经知道的一种流行工具是Make命令,它可以帮助我们使用Makefiles的任务自动化。一个好的开发实践是在 Makefile 中保留要执行的命令列表,我们可以在以后轻松引用并使用简单的 make 命令执行。

  1. taskfile:这个库拥有更多的冗长性,因此执行命令的可解释性略好于 Make。它也没有依赖性,相比之下非常轻量级。

主动编译

Air:这是一个很棒的实用程序Go包,可以帮助重建和执行项目的main.go保存或几乎任何保存的文件(如我们所愿),而无需我们每次都输入它来运行它。

Web开发

以下是定期维护的、流行的Web框架:

  1. Gin Web Framework:这是最流行的 Go 网络开发库,并且有很多充分的理由。
  2. Iris:在Go中构建高性能Web应用程序和API的另一种选择。如果你以前使用过ExpressJS,你会觉得有点熟悉。

日期时间管理

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

数据库对象关系管理

  1. Gorm:这是最容易使用的对象关系映射(ORM)Go库, 特别适用于三种主流的数据库SQLitePostgreSQLMySQL
  2. Xorm:XORM 是一个简单而强大的Go语言ORM框架。通过它可以使数据库操作非常简便。

微服务

微服务通常用于带有 Docker 和 Kubernetes 的容器化架构,以构建健壮的应用程序。以下是几个 Go 微服务包:

  1. Echo:该框架支持RESTful API设计,是最流行的Go微服务框架。
  2. go-micro:这个库是同一领域的另一个很好的选择,具有内置的身份验证和数据存储设计。确实很方便。
  3. go-zero:go-zero 是一个集成了各种工程实践的 web 和 rpc 框架

机器人

DiscordGo:这是 Discord API 函数最有用的 API 包装器,具有出色的模块化结构,包含您可能需要的所有主要 discord 机器人操作。

一个小的不便之处是它仍然没有专门的文档,但我在自己的一些实验过程中发现,阅读代码本身非常容易,因为它被整齐地分成模块和包。

网页抓取

Colly:这是一个很棒的 Go 网络抓取器和爬虫框架,特别适用于归档(我已经大量使用它)和数据挖掘目的。

数据库相关

  1. Go-redis:这是一个很棒的、高度维护的用于 Go 的 redis 数据库客户端。它适用于 redis 6 和 7,并且设置过程非常简单。强烈推荐。
  2. go-elasticsearch:这是 Go 的官方 Elasticsearch 客户端。
  3. graphql-go:这是 GraphQL 在 Go 中的实现,支持查询、突变和订阅。

总结

我希望这是对 Go 中一些有用库的有用介绍。希望这篇文章对大家所有帮助,同时有其他优秀的库也欢迎添加。

该文翻译自:https://medium.com/this-code/17-golang-packages-you-should-know-c7f156b1270e

标签:Web,常用,框架,应用程序,Go,构建,开发包,go
From: https://www.cnblogs.com/cheyunhua/p/17048523.html

相关文章

  • 解决docker中mongo报Restarting (132) 5 seconds ago
    报的一直自动重启原因是自建服务器的机器不支持avx指令可以通过cat/proc/cpuinfo|grepavxorsudocat/proc/cpuinfo|grepavx查看你的系统是否支持avx指令,如......
  • Go语言基础
    Go程序的组成Go的代码通过包(package)组织,一个包由多个源码文件组成(.go文件)每个源代码文件,都由packagepackage_name声明语句起始,表示文件位于哪个包,main包定义一个独立可......
  • 数组的常用方法有哪些?
    一、操作方法数组基本操作可以归纳为增、删、改、查,需要留意的是哪些方法会对原数组产生影响,哪些方法不会1、增下面前三种是对原数组产生影响的增添方法,第四种则不会对......
  • python django校园二手商城
    pythondjango校园二手商城 django二手商城django校园商城django校园商店django电子商城django网上商城前端:htmlcss等后端:pythondjango数据库:MYSQL涉及功能......
  • python Django垃圾分类系统
    pythonDjango垃圾分类系统 pythonDjango垃圾回收系统python校园垃圾分类系统后端:python3.7+Django3.2前端:html js css等数据库:MySQL功能:注册、登录、修改......
  • R语言多元(多变量)GARCH :GO-GARCH、BEKK、DCC-GARCH和CCC-GARCH模型和可视化|附代码数据
    全文链接:http://tecdat.cn/?p=30647最近我们被客户要求撰写关于GARCH的研究报告,包括一些图形和统计输出。从Engle在1982发表自回归条件异方差(ARCH)模型的论文以来,金融......
  • 常用命令记录
    目录​​前言​​​​conda​​​​检查更新当前conda环境​​​​查看已安装的软件包​​​​创建一个新的虚拟环境​​​​查看已存在的一些虚拟环境​​​​启动一个虚拟......
  • 【每日一读】SWOPE:Efficient Approximate Algorithms for Empirical Entropy and Mut
    目录​​简介​​​​简介​​​​ABSTRACT​​​​1INTRODUCTION​​​​2PRELIMINARIES​​​​2.1ProblemDefinition​​​​2.2ExistingSolutions​​​​6EXPER......
  • 解决命令行窗口执行godoc报错
    在cmd命令行窗口执行godoc报错:'godoc'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile. 原因:这是因为Windows的系统变量没有......
  • 关于golang中,defer的一个疑问
    代码如下:packagemainimport( "fmt" "os" "os/signal" "syscall")funcmain(){ defertestA() defertestB()() defertestC()()() fmt.Println("running"......