首页 > 其他分享 >你应该知道的17个Golang包

你应该知道的17个Golang包

时间:2022-12-12 11:33:49浏览次数:41  
标签:Web 框架 17 应用程序 Golang 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库, 特别适用于三种主流的数据库​​SQLite​​​、​​PostgreSQL​​​和​​MySQL​​。
  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 中一些有用库的有用介绍。希望这篇文章对大家所有帮助,同时有其他优秀的库也欢迎添加。

该文翻译自:​​medium.com/this-code/1…​​

标签:Web,框架,17,应用程序,Golang,go,构建,Go,应该
From: https://blog.51cto.com/u_10992108/5929296

相关文章

  • 在visual studio 2017中realpath在<cstdlib>头文件中未定义如何解决?
    在VisualStudio2017中,realpath函数不在头文件中,因为它属于POSIX标准而不是C标准。要使用realpath函数,你可以在你的代码中包含头文件<stdlib.h>并使用函数名......
  • 女生学IT到底应该考虑什么?
    首先应该是兴趣。做任何事情都一样,有了兴趣,才有坚持下去的动力,如果你每天做着一件提不起兴趣、索之无味的事情,那么厌倦也是迟早的事。技术类的工作更是如此,需要踏实、......
  • go-dongle 0.2.1 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库
    dongle是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库Dongle已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/dong......
  • ASM数据库启动报ORA-01078,ORA-01565,ORA-17503,ORA-01017
    环境:ASM管理软件:11.2.0.4ORACLE软件:11.2.0.4操作系统:redhat6该环境是借用了asm管理软件来提升IO性能,并没有安装集群软件。故障现象:启动数据库时报错,alert......
  • CF1771C
    Idea注意到取值范围不大,因此可以打出质数的表,然后筛选用map存起来进行判断。Code#include<bits/stdc++.h>#defineF(i,a,b)for(inti=a;i<=b;i++)#defineFd(i,......
  • golang error 使用
    前言在Go的编程中,error的使用场景数不胜数,主要就是用来处理各种异常情况.长久以来,我的使用方式都是这样的:err:=errors.New("fail")iferr!=nil{//dosom......
  • P1763 埃及分数
    #include<iostream>#include<cstring>#include<string>usingnamespacestd;typedeflonglongll;lla,b,md;llans[100000],s[100000];llgcd(......
  • 2022-2023-1 20221317《计算机基础与程序设计》第十五周学习总结
    作业信息这个作业属于哪个课程:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)这个作业的要求在:2022-2023-1《计算......
  • 2022-2023-1学期 20221417 《计算机基础与程序设计》课程总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第十五......
  • 洛谷 P1786 帮贡排序 题解
    原题链接P1786帮贡排序解析实现方法一看题:这不就是道排序吗?但是——用啥办法呢?这自带的排序方法,肯定是不能用了那么我们就来写一个cmp排序函数吧!但是——输出排......