golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏

golang开发需要掌握的核心包以及中间件,涵盖项目的各个领域,值得收藏。

  1. 常用包
常用包说明
fmt实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。
io实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们在进行流式读写(比如读写文件)时,通常会用到该包。
bufio它在io的基础上提供了缓存功能。在具备了缓存功能后, bufio可以比较方便地提供ReadLine之类的操作。
strconv提供字符串与基本数据类型互转的能力。
os本包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。
sync它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。
flag它提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。
encoding/jsonJSON目前广泛用做网络程序中的通信格式。本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。
http通过http包,只需要数行代码,即可实现一个爬虫或者一个Web服务器,这在传统语言中是无法想象的。




2. 常用第三方包

地址
数据库操作github.com/jinzhu/gorm github.com/go-xorm/xorm
搜索esgithub.com/olivere/elastic
rocketmq操作github.com/apache/rocketmq-client-go/v2
rabbitmq 操作github.com/streadway/amqp
redis 操作github.com/go-redis/redis
etcd 操作github.com/coreos/etcd/clientv3
kafkahttps://github.com/Shopify/sarama https://github.com/bsm/sarama-cluster
excel 操作github.com/360EntSecGroup-Skylar/excelize
ppt 操作golang.org/x/tools/cmd/present
go-svg 操作https://github.com/ajstarks/svgo
go 布隆过滤器实现https://github.com/AndreasBriese/bbloom
json相关https://github.com/bitly/go-simplejson
LRU Cache实现https://github.com/bluele/gcache https://github.com/hashicorp/golang-lru
go运行时函数替换https://github.com/bouk/monkey
tomlhttps://github.com/toml-lang/toml https://github.com/naoina/toml
yamlhttps://github.com/go-yaml/yaml
viperhttps://github.com/spf13/viper
go key/value存储https://github.com/etcd-io/bbolt
基于ringbuffer的无锁golang workpoolhttps://github.com/Dai0522/workpool
轻量级的协程池https://github.com/ivpusic/grpool
打印go的详细数据结构https://github.com/davecgh/go-spew
基于ringbuffer实现的队列https://github.com/eapache/queue
拼音https://github.com/go-ego/gpy
分词https://github.com/go-ego/gse
搜索https://github.com/go-ego/riot
windows COMhttps://github.com/go-ego/cedar
sessionhttps://github.com/gorilla/sessions
路由https://github.com/gorilla/mux
websockethttps://github.com/gorilla/websocket
Action handlerhttps://github.com/gorilla/handlers
csrfhttps://github.com/gorilla/csrf
contexthttps://github.com/gorilla/context
过滤html标签https://github.com/grokify/html-strip-tags-go
可配置的HTML标签过滤https://github.com/microcosm-cc/bluemonday
根据IP获取地理位置信息https://github.com/ipipdotnet/ipdb-go
html转markdownhttps://github.com/jaytaylor/html2text
goroutine 本地存储https://github.com/jtolds/gls
彩色输出https://github.com/mgutz/ansi
表格打印https://github.com/olekukonko/tablewriter
reflect 更高效的反射APIhttps://github.com/modern-go/reflect2
msgfmt (格式化字符串,将%更换为变量名)https://github.com/modern-go/msgfmt
可取消的goroutinehttps://github.com/modern-go/concurrent
深度拷贝https://github.com/mohae/deepcopy
安全的类型转换包https://github.com/spf13/cast
从文本中提取链接https://github.com/mvdan/xurls
字符串格式处理(驼峰转换)https://godoc.org/github.com/naoina/go-stringutil
文本diff实现https://github.com/pmezard/go-difflib
uuid相关https://github.com/satori/go.uuid https://github.com/snluu/uuid
去除UTF编码中的BOMhttps://github.com/ssor/bom
图片缩放https://github.com/nfnt/resize
生成 mock serverhttps://github.com/otokaze/mock
go 性能上报到influxdbhttps://github.com/rcrowley/go-metrics
go zookeeper客户端https://github.com/samuel/go-zookeeper
go thrifthttps://github.com/samuel/go-thrift
MQTT 客户端https://github.com/shirou/mqttcli
hbasehttps://github.com/tsuna/gohbase
go 性能上报到influxdbhttps://github.com/rcrowley/go-metrics
go 性能上报到prometheushttps://github.com/deathowl/go-metrics-prometheus
ps utilshttps://github.com/shirou/gopsutil
小数处理https://github.com/shopspring/decimal
结构化日志处理(json)https://github.com/sirupsen/logrus
命令行程序框架 clihttps://github.com/urfave/cli
命令行程序框架 cobrahttps://github.com/spf13/cobra




3. 必看项目

项目地址说明
gingithub.com/gin-gonic/gin轻量级web框架,很多公司都是基于它进行魔改
beegogithub.com/beego/beego也是web框架,比较全能
kratosgithub.com/go-kratos/kratosbilibili开源的微服务框架,b站出品必属于精品
TiDBgithub.com/pingcap/tidb见识过mysql性能瓶颈之后你会想要选择的一款数据库




4. 完整标准库列表

子包说明
bufiobytes提供了对字节切片操作的函数
crypto收集了常见的加密常数
errors实现了操作错误的函数
Expvar为公共变量提供了一个标准的接口,如服务器中的运算计数器
flag实现了命令行标记解析
fmt实现了格式化输入输出
hash提供了哈希函数接口
html实现了一个HTML5兼容的分词器和解析器
image实现了一个基本的二维图像库
io提供了对I/O原语的基本接口
log它是一个简单的记录包,提供最基本的日志功能
math提供了一些基本的常量和数学函数
mine实现了部分的MIME规范
net提供了一个对UNIX网络套接字的可移植接口,包括TCP/IP、 UDP域名解析和UNIX域套接字
os为操作系统功能实现了一个平台无关的接口
path实现了对斜线分割的文件名路径的操作
reflect实现了运行时反射,允许一个程序以任意类型操作对象
regexp实现了一个简单的正则表达式库
runtime包含与Go运行时系统交互的操作,如控制goroutine的函数
sort提供对集合排序的基础函数集
strconv实现了在基本数据类型和字符串之间的转换
strings实现了操作字符串的简单函数
sync提供了基本的同步机制,如互斥锁
syscall包含一个低级的操作系统原语的接口
testing提供对自动测试Go包的支持
time提供测量和显示时间的功能
unicodeUnicode编码相关的基础函数
archivetar实现对tar压缩文档的访问
zip提供对ZIP压缩文档的读和写支持
compressbzip2实现了bzip2解压缩
flate实现了RFC 1951中所定义的DEFLATE压缩数据格式
gzip实现了RFC 1951中所定义的gzip格式压缩文件的读和写
lzw实现了 Lempel-Ziv-Welch编码格式的压缩的数据格式
zlib实现了RFC 1950中所定义的zlib格式压缩数据的读和写
containerheap提供了实现heap.Interface接口的任何类型的堆操作
lsit实现了一个双链表
ring实现了对循环链表的操作
cryptoaes实现了AES加密(以前的Rijndael)
cipher实现了标准的密码块模式,该模式可包装进低级的块加密实现中
des实现了数据加密标准( Data Encryption Standard,DES)和三重数据加密算法( TripleData Encryption Algorithm, TDEA)
dsa实现了FIPS 186-3所定义的数据签名算法( Digital Signature Algorithm)
ecdsa实现了FIPS 186-3所定义的椭圆曲线数据签名算法( Elliptic Curve Digital SignatureAlgorithm)
elliptic实现了素数域上几个标准的椭圆曲线
hmac实现了键控哈希消息身份验证码( Keyed-Hash Message Authentication Code,HMAC)
md5实现了RFC 1321中所定义的MD5哈希算法
rand实现了一个加密安全的伪随机数生成器
rc4实现了RC4加密,其定义见Bruce Schneier的应用密码学( Applied Cryptography)
rsa实现了PKCS#1中所定义的RSA加密
sha1实现了RFC 3174中所定义的SHA1哈希算法
sha256实现了FIPS 180-2中所定义的SHA224和SHA256哈希算法
sha512实现了FIPS 180-2中所定义的SHA384和SHA512哈希算法
subtle实现了一些有用的加密函数,但需要仔细考虑以便正确应用它们
tls部分实现了RFC 4346所定义的TLS 1.1协议
x509可解析X.509编码的键值和证书
x509/pkix包含用于对X.509证书、 CRL和OCSP的ASN.1解析和序列化的共享的、低级的结构
databasesql围绕SQL提供了一个通用的接口
sql/driver定义了数据库驱动所需实现的接口,同sql包的使用方式
debugdwarf提供了对从可执行文件加载的DWARF调试信息的访问,这个包对于实现Go语言的调试器非常有价值
elf实现了对ELF对象文件的访问。 ELF是一种常见的二进制可执行文件和共享库的文件格式。 Linux采用了ELF格式
gosym访问Go语言二进制程序中的调试信息。对于可视化调试很有价值
macho实现了对Mach-O对象文件的访问
pe实现了对PE( Microsoft Windows Portable Executable)文件的访问
encodingascii85实现了ascii85数据编码,用于btoa工具和Adobe’s PostScript以及PDF文档格式
asn1实现了解析DER编码的ASN.1数据结构,其定义见ITU-T Rec X.690
base32实现了RFC 4648中所定义的base32编码
base64实现了RFC 4648中所定义的base64编码
binary实现了在无符号整数值和字节串之间的转化,以及对固定尺寸值的读和写
csv可读和写由逗号分割的数值( csv)文件
gob管理gob流——在编码器(发送者)和解码器(接收者)之间进行二进制值交换
hex实现了十六进制的编码和解码
json实现了定义于RFC 4627中的JSON对象的编码和解码
pem实现了PEM( Privacy Enhanced Mail)数据编码
xml实现了一个简单的可理解XML名字空间的XML 1.0解析器
goast声明了用于展示Go包中的语法树类型
build提供了构建Go包的工具
doc从一个Go AST(抽象语法树)中提取源代码文档
parser实现了一个Go源文件解析器
printer实现了对AST(抽象语法树)的打印
scanner实现了一个Go源代码文本的扫描器
token定义了代表Go编程语言中词法标记以及基本操作标记( printing、 predicates)的常量
hashadler32实现了Adler-32校验和
crc32实现了32位的循环冗余校验或CRC-32校验和
crc64实现了64位的循环冗余校验或CRC-64校验和
fnv实现了Glenn Fowler、 Landon Curt Noll和Phong Vo所创建的FNV-1和FNV-1a未加密哈希函数
htmltemplate它自动构建HTML输出,并可防止代码注入
imagecolor实现了一个基本的颜色库
draw提供一些做图函数
gif实现了一个GIF图像解码器
jpeg实现了一个JPEG图像解码器和编码器
png实现了一个PNG图像解码器和编码器
indexsuffixarray通过构建内存索引实现的高速字符串匹配查找算法
ioioutil实现了一些实用的I/O函数
logsyslog提供了对系统日志服务的简单接口
mathbig实现了多精度的算术运算(大数)
cmplx为复数提供了基本的常量和数学函数
rand实现了伪随机数生成器
mimemultipart实现了在RFC 2046中定义的MIME多个部分的解析
nethttp提供了HTTP客户端和服务器的实现
mail实现了对邮件消息的解析
rpc提供了对一个来自网络或其他I/O连接的对象可导出的方法的访问
smtp实现了定义于RFC 5321中的简单邮件传输协议( Simple Mail Transfer Protocol)
textproto实现了在HTTP、 NNTP和SMTP中基于文本的通用的请求/响应协议
url解析URL并实现查询转义
http/cgi实现了定义于RFC 3875中的CGI(通用网关接口)
http/fcgi实现了FastCGI协议
http/httptest提供了一些HTTP测试应用
http/httputil提供了一些HTTP应用函数,这些是对net/http包中的东西的补充,只不过相对不太常用
http/pprof通过其HTTP服务器运行时提供性能测试数据,该数据的格式正是pprof可视化工具需要的
rpc/jsonrpc为rpc包实现了一个JSON-RPC ClientCodec和ServerCodec
osexec可运行外部命令
user通过名称和id进行用户账户检查
pathfilepath实现了以与目标操作系统定义文件路径相兼容的方式处理文件名路径
regexpsyntax将正则表达式解析为语法树
runtimedebug包含当程序在运行时调试其自身的功能
pprof以pprof可视化工具需要的格式写运行时性能测试数据
syncatomic提供了低级的用于实现同步算法的原子级的内存机制
testingiotest提供一系列测试目的的类型,实现了Reader和Writer标准接口
quick实现了用于黑箱测试的实用函数
script帮助测试使用通道的代码
textscanner为UTF-8文本提供了一个扫描器和分词器
tabwriter实现了一个写筛选器( tabwriter.Writer),它可将一个输入的tab分割的列翻译为适当对齐的文本
template数据驱动的模板引擎,用于生成类似HTML的文本输出格式
template/parse为template构建解析树
unicode/utf16实现了UTF-16序列的的编码和解码
unicode/utf8实现了支持以UTF-8编码的文本的函数和常数




5. 其他优秀的开源工具分类

  • 音频和音乐
说明
EasyMIDIEasyMidi是一个简单可靠的库,用于处理标准Midi文件(SMF)。
flac支持FLAC流的Native Go FLAC编码器/解码器。
gaad本机Go AAC比特流解析器。
go-sox用于go的libsox绑定。
go_mediainfo用于go的libmediainfo绑定。
gosamplerate用于go的libsamplerate绑定。
id3v2用于Go的快速,稳定的ID3解析和编写库。
malgo迷你音频库。
minimp3轻量级MP3解码器库。
mix为音乐应用程序基于序列转到本地音频混合器。
mp3Native Go MP3解码器。
music-theoryGo中的音乐理论模型。
Oto在多个平台上播放声音的低级库。
PortAudio用于PortAudio音频I / O库的绑定。
portmidi绑定PortMidi。
taglib为taglib绑定。
vorbis“本机” Go Vorbis解码器(使用CGO,但没有依赖项)。
waveformGo程序包,能够从音频流生成波形图像。
  • 数据结构
说明
algorithms算法和数据结构。CLRS研究。
binpacker二进制打包程序和解包程序可帮助用户构建自定义二进制流。
bit具有额外的位旋转功能的Golang设置数据结构。
bitset实现位集的Go包。
bloom在Go中实现的Bloom过滤器。
bloomGolang Bloom过滤器实现。
boomfilters用于处理连续无界流的概率数据结构。
concurrent-writer高并发直接替换bufio.Writer。
conjungo一个小型,强大而灵活的合并库。
count-min-log执行Count-Min-Log草图:使用近似计数器进行近似计数(类似于Count-Min草图,但使用较少的内存)。
crunchGo包实现了用于轻松处理各种数据类型的缓冲区。
cuckoofilterCuckoo过滤器:是Go中实现的计数布隆过滤器的很好替代。
deque高度优化的双端队列。
deque快速的环形缓冲区双端队列(双端队列)。
dictGo的类似Python的字典(dict)。
encodingGo的整数压缩库。
go-adaptive-radix-tree自适应基数树的 Go实现。
go-datastructures有用,高性能和线程安全的数据结构的集合。
go-efElias-Fano编码的Go实现。
go-geoindex内存中的地理索引。
go-mcache快速内存键:值存储/缓存库。指针缓存。
go-rquad具有有效点定位和邻居发现功能的区域四叉树。
gocache具有多个存储(内存,memcache,redis等),可链接,可加载,指标缓存等的完整Go缓存库。
goconcurrentqueue并发FIFO队列。
gods数据结构。容器,集合,列表,堆栈,地图,BidiMap,树,HashSet等。
gofalGo的小数api。
golang-setGo的线程安全和非线程安全高性能集。
gosetGo的有用的Set集合实现。
goskiplistGo中的跳过列表实现。
gotaGo的数据框,序列和数据整理方法的实现。
hideID类型,将其编组进/出哈希以防止将ID发送给客户端。
hilbertGo程序包,用于在空间填充曲线(例如Hilbert和Peano曲线)之间映射值。
hyperloglogHyperLogLog实施,具有稀疏,LogLog-Beta偏差校正和TailCut空间减少功能。
iterC ++ STL迭代器和算法的实现。
levenshteinLevenshtein距离和相似性度量标准,具有可自定义的编辑费用和通用前缀的类似于Winkler的奖金。
levenshtein在Go中计算levenshtein距离的实现。
mafsa具有最小完美散列的MA-FSA实现。
merkletreemerkle树的实现,可对数据结构的内容进行有效且安全的验证。
mspm用于信息检索的多字符串模式匹配算法。
null可空转到类型,可以被编组/解组到/从JSON。
parsefields用于解析类似JSON的日志的工具,以收集唯一的字段和事件。
pipeline具有扇入和扇出的管线的实现。
ptrie前缀树的实现。
remember-go缓存慢速数据库查询的通用接口(由redis,memcached,ristretto或内存支持)。
ring围棋实现了高性能,线程安全的布隆过滤器。
roaring实施压缩位集的软件包。
set使用LinkedHashMap的围棋设置简单的数据结构实现。
skiplist非常快的Go Skiplist实施。
skiplistGo中的跳过列表实现。
timedmap具有过期的键/值对的地图。
treap使用树堆的持久快速排序的地图。
trieGo中的Trie实现。
ttlcache内存中的LRU字符串接口{}映射,其中包含golang的到期时间。
typ空类型,安全的原始类型转换和从复杂结构中获取值。
willf/bloomGo包实现Bloom过滤器。
  • 分布式系统
说明
celeriac用于在Go中添加支持以交互和监视Celery工作者,任务和事件的库。
consistent具有受限负载的一致哈希
dhtBitTorrent Kademlia DHT实施。
digotagrpc电子商务微服务。
dot使用操作转换/ OT进行分布式同步。
doublejump改进后的Google的跳转一致性哈希。
dragonboatGo中功能齐全的高性能多组Raft库。
drmaa基于DRMAA标准的集群调度程序的作业提交库。
dynamolockDynamoDB支持的分布式锁定实现。
dynatomic将DynamoDB用作原子计数器的库。
emitter-io使用MQTT,Websockets和love构建的高性能,分布式,安全和低延迟的发布-订阅平台。
flowgraph基于流的编程包。
gleam用纯围棋和Luajit快速和可扩展的分布式的map / reduce系统,具有Luajit的高性能结合Go的高并发,单独运行或分发。
glow易于使用的可扩展的分布式大数据处理,Map-Reduce,DAG执行,全部在纯Go中进行。
go-healthhealth-用于在服务中启用异步依赖项运行状况检查的库。
go-jumpGoogle的“ Jump”一致性哈希函数的端口。
go-kit支持服务发现,负载平衡,可插拔传输,请求跟踪等的微服务工具包
go-sundheit建立用于支持为golang服务定义异步服务运行状况检查的库。
gorpc简单,快速和可扩展的RPC库,可实现高负载。
grpc-gogRPC的Go语言实现。基于HTTP / 2的RPC。
hprose十分新颖的RPC库,现在支持25种以上的语言。
jsonrpcjsonrpc软件包可帮助实现JSON-RPC 2.0。
jsonrpcJSON-RPC 2.0 HTTP客户端实现。
KrakenD具有中间件的超高性能API网关框架。
liftbridgeNATS的轻量级,容错消息流。
micro可插拔的microService工具箱和分布式系统平台。
NATS用于微服务,IoT和云本机系统的轻量级高性能消息传递系统。
outboxerOutboxer是一个实现库模式的go库。
pglockPostgreSQL支持的分布式锁定实现。
raftHashiCorp的Raft共识协议的Golang实现。
raftETCD中实现的Raft协议。
rainBitTorrent客户端和库。
redis-lock使用Redis的简化分布式锁定实现。
resgate用于构建REST,实时和RPC API的实时API网关,其中所有客户端都可以无缝同步。
ringpop-goGo应用程序的可扩展,容错应用程序层分片。
rpcx分布式可插拔RPC服务框架,例如阿里巴巴Dubbo。
sleuth用于在HTTP服务之间进行无主p2p自动发现和RPC的库(ZeroMQ)。
tendermint高性能中间件,用于使用Tendermint共识和区块链协议将以任何编程语言编写的状态机转换为拜占庭容错复制状态机。
torrentBitTorrent客户端软件包。
  • 电子邮件
说明
chasquid用Go编写的SMTP服务器。
douceurCSS内衬为您的HTML电子邮件。
email用于Go的强大而灵活的电子邮件库。
go-dkimDKIM库,用于签名和验证电子邮件。
go-imap用于客户端和服务器的IMAP库。
go-messageInternet消息格式和邮件消息的流库。
go-premailerGo中HTML邮件的内联样式。
go-simple-mail使用SMTP保持活动状态和两个超时发送电子邮件的非常简单的程序包:连接和发送。
Hectane提供HTTP API的轻型SMTP客户端。
hermesGolang软件包,可生成干净的响应式HTML电子邮件。
mailchain将加密的电子邮件发送到用Go编写的区块链地址。
mailgun-goGo库,用于使用Mailgun API发送邮件。
MailHog通过Web和API界面进行电子邮件和SMTP测试。
SendGridSendGrid的Go库,用于发送电子邮件。
smtpSMTP服务器协议状态机。
  • 嵌入式脚本语言
说明
anko用Go语言编写的可编写脚本的解释器。
binder转到基于gopher-lua的 Lua绑定库。
cel-go具有渐进式输入功能的快速,便携式,非图灵完整表达评估。
expr可以评估表达式的引擎。
gentee可嵌入的脚本编程语言。
gispGo中的简单LISP。
go-duktapeGo的Duktape JavaScript引擎绑定。
go-luaLua 5.2 VM到纯Go的端口。
go-phpGo的PHP绑定。
go-python与CPython C-API的幼稚go绑定。
goluaLua C API的绑定。
gopher-lua用Go编写的Lua 5.1 VM和编译器。
gval用Go编写的高度可定制的表达语言。
ngaro可嵌入的Ngaro VM实现,支持在Retro中编写脚本。
otto用Go编写的JavaScript解释器。
purlGo中嵌入的Perl 5.18.2。
tengo用于Go的字节码编译脚本语言。
  • 错误处理
说明
emperrorGo库和应用程序的错误处理工具和最佳实践。
errlog可破解的软件包,用于确定错误的负责任的源代码(以及其他一些快速调试功能)。可插入任何现成的记录器。
errors下拉更换为标准库的错误包和github.com/pkg/errors。提供各种错误处理原语。
errors提供简单错误处理原语的软件包。
errors简单golang错误处理与分类元。
errorx具有堆栈跟踪,错误组成等的功能丰富的错误包。
Falcon一个简单但功能强大的错误处理软件包。
go-multierrorGo(golang)软件包,用于将错误列表表示为单个错误。
tracerr带有堆栈跟踪和源代码片段的Golang错误。
werr错误包装程序为Go中的错误类型创建了一个包装程序,该包装程序捕获了调用它的文件,行和堆栈。
  • 文件
说明
aferoGo的文件系统抽象系统。
afsGo的抽象文件存储(mem,scp,zip,tar,云:s3,gs)。
bigfile文件传输系统,支持使用http api,rpc调用和ftp客户端管理文件。
checksum计算大型文件的消息摘要,例如MD5和SHA256。
flop文件操作库,旨在与GNU cp镜像功能奇偶校验。
go-csv-tagtag-使用标签加载csv文件。
go-decent-copy复制human文件。
go-exiftoolExifTool的Go绑定,这是众所周知的库,用于从文件(图片,PDF,office,…)提取尽可能多的元数据(EXIF,IPTC等)。
go-gtfs在go中加载gtfs文件。
notify具有简单API的文件系统事件通知库,类似于os / signal。
opc为Go加载Open Packaging Conventions(OPC)文件。
parquet读取和写入 parquet文件。
pdfcpuPDF 处理器。
skywalker一种软件包,允许一个人轻松地同时通过文件系统。
stl读取和写入STL(立体光刻)文件的模块。并发读取算法。
tarfstar文件FileSystem interface接口的实现。
vfs跨多种文件系统类型(例如os,S3和GCS)的Go的一组可插拔,可扩展且自以为是的文件系统功能。
  • 金融
说明
accountinggolang的货币和货币格式。
currency高性能和准确的货币计算包。
decimal任意精度定点十进制数字。
go-financeGo中的综合金融市场数据。
go-finance金融功能库,用于货币时间价值(年金),现金流量,利率转换,债券和折旧计算。
go-finance获取汇率,通过VIES检查增值税号和检查IBAN银行帐号的模块。
go-moneyFowler的Money模式的实现。
ofxgo查询OFX服务器和/或解析响应(使用示例命令行客户端)。
orderbook匹配引擎的限价订单在Golang。
techan具有高级市场分析和交易策略的技术分析库。
transaction以多线程模式运行的嵌入式帐户嵌入式事务数据库。
vat增值税号验证和欧盟增值税率。
  • 游戏开发
说明
Azul3D用Go语言编写的3D游戏引擎。
EbitenGo中死的简单2D游戏库。
engoEngo是用Go语言编写的开源2D游戏引擎。它遵循实体组件系统范式。
g3nGo 3D游戏引擎。
GarageEngine用Go语言编写的2D游戏引擎,可在OpenGL上使用。
glopGlop(权力游戏库)是一个相当简单的跨平台游戏库。
go-astarA 路径查找算法的Go实现。
go-colladaGo包,用于Collada文件格式。
go-sdl2Simple DirectMedia Layer的 Go绑定。
go3d用于Go的面向性能的2D/3D数学软件包。
gonet使用golang实现的游戏服务器框架。
goworld可扩展的游戏服务器引擎,具有空间实体框架和热插拔功能。
Leaf轻量级游戏服务器框架。
nano重量轻,设备,高性能的基于golang游戏服务器架构。
OakPure Go游戏引擎。
Pitaya可扩展的游戏服务器框架,具有群集支持和通过C SDK的iOS,Android,Unity等客户端库。
PixelGo中的手工制作2D游戏库。
raylib-go去绑定raylib,简单和易于使用的库,以了解电子游戏编程。
termloopGo的基于终端的游戏引擎,建立在Termbox之上。
  • 地理位置
说明
geocache适用于基于地理位置的应用程序的内存中缓存。
geoservergeoserver是Go软件包,用于通过GeoServer REST API操纵GeoServer实例。
gismanager将 GIS数据(矢量数据)发布到PostGIS和Geoserver。
osm用于读取,编写和使用OpenStreetMap数据和API的库。
pbfOpenStreetMap PBF golang编码器/解码器。
S2 geometryGo中的S2几何库。
Tile38具有空间索引和实时地理围栏的地理位置数据库。
WGS84库坐标转换和变换(ETRS89,OSGB36,NAD83,RGF93,网络墨卡托UTM)。
  • 编译器
说明
c4go将C代码转换为Go代码。
f4go将FORTRAN 77代码转换为Go代码。
gopherjs从Go到JavaScript的编译器。
llgoGo的基于LLVM的编译器。
tardisgoGolang转换为CPP / CSharp / Java / JavaScript转译器。
  • Goroutines
说明
ants用于golang的高性能goroutine池。
artifexGolang使用基于工作程序的分派的简单内存中作业队列。
async一种异步执行功能的安全方法,以防万一。
breaker使执行流程可中断的灵活机制。
cyclicbarrier用于golang的CyclicBarrier。
go-floc轻松编排goroutine。
go-flow控制goroutine的执行顺序。
go-tools/multithreading使用带有简单API的轻量级库管理goroutine池。
go-trylock支持Golang的读写锁的TryLock。
go-waitgroupsync.WaitGroup与错误处理和并发控制类似。
gohiveGo的高性能和易于使用的Goroutine池。
gollback异步简单函数实用程序,用于管理闭包和回调的执行。
GoSlaves简单和异步Goroutine池库。
goworkergoworker是基于Go的后台工作者。
gowpgowp是并发限制goroutine池。
gpool管理可调整大小的上下文感知goroutine池以绑定并发。
grpool轻巧的Goroutine池。
Hunch预感提供功能,如:All,First,Retry,Waterfall等等,这使得异步流控制更加直观。
oversight监督是Erlang监督树的完整实现。
parallel-fn并行运行功能。
pool有限的消费者goroutine池或无限制的goroutine池,以便更轻松地处理和取消goroutine。
queue为您提供sync.WaitGroup类似的队列组可访问性。帮助您节流和限制goroutine,等待所有goroutine结束等等。
routine具有上下文和支持的例程控制:Main,Go,Pool和一些有用的Executors。
semaphore基于通道和上下文的具有锁定/解锁操作超时的信号量模式实现。
semaphore基于CAS的快速可调整大小的信号量实现(比基于通道的信号量实现更快)。
stl基于软件交易内存(STM)并发控制机制的软件交易锁。
threadpoolGolang线程池实现。
tunny线程池golang。
worker-poolgoworker是一个简单的Go异步工作池。
workerpoolGoroutine池,它限制了任务执行的并发性,而不是排队的任务数。
  • 图形界面
说明
app打包以使用GO,HTML和CSS创建应用的程序。支持:MacOS,Windows正在开发中。
fyne为Go设计的跨平台本机GUI,使用EFL呈现。支持:Linux,macOS,Windows。
go-astilectron使用GO和HTML / JS / CSS(由Electron支持)构建跨平台GUI应用。
go-gtkGTK的绑定。
go-sciterGo绑定:用于现代桌面UI开发的可嵌入HTML / CSS / script引擎。跨平台。
gotk3GTK3的绑定。
gowd使用GO,HTML,CSS和NW.js进行快速简单的桌面UI开发。跨平台。
qtGo的Qt绑定(支持Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi)。
uiGo的平台本地GUI库。跨平台。
Wails使用内置OS HTML渲染器的HTML UI的Mac,Windows,Linux桌面应用程序。
walkGo的Windows应用程序库工具包。
webview具有简单双向JavaScript绑定的跨平台Webview窗口(Windows / macOS / Linux)。
go-appindicatorlibappindicator3 C库的Go绑定。
gosx-notifierGo的OSX桌面通知库。
mac-activity-trackerOSX库,用于通知计算机上的任何(可插入)活动。
mac-sleep-notifiergolang中的OSX睡眠/唤醒通知。
robotgoGo本机跨平台GUI系统自动化。控制鼠标,键盘等。
systray跨平台的Go库,用于在通知区域中放置图标和菜单。
trayhost跨平台的Go库,用于在主机操作系统的任务栏中放置一个图标。
  • 图片
说明
bild纯Go中图像处理算法的集合。
bimg使用libvips进行快速有效的图像处理的小包装。
cameronGo的头像生成器。
canvas将矢量图形转换为PDF,SVG或光栅图像。
darkroom具有可变存储后端的图像代理和侧重于速度和弹性的图像处理引擎。
geopattern从字符串创建漂亮的生成图像图案。
gg纯Go中的2D渲染。
gift图像处理过滤器的包装。
gltf高效,强大的glTF 2.0读取器,写入器和验证器。
go-cairo用于cairo图形库的绑定。
go-gdGD库的Go绑定。
go-nudeGo的裸露检测。
go-opencv用于OpenCV的绑定。
go-webcolorswebcolors库的端口,从Python到Go。
gocv使用OpenCV 3.3+进行计算机视觉的Go软件包。
goimagehashGo感知图像哈希包。
goimghdrimghdr模块确定Go文件中包含的图像类型。
govatar用于生成有趣头像的库和CMD工具。
image2ascii将图像转换为ASCII。
imagick绑定到ImageMagick的MagickWand C API。
imaginary用于图像大小调整的快速,简单的HTTP微服务。
imaging简单的Go图像处理包。
img选择图像处理工具。
lnGo中的3D线条艺术渲染。
mergi用于图像处理(合并,裁切,调整大小,水印,动画)的Tool&Go库。
mort用Go编写的存储和图像处理服务器。
mpo用于MPO 3D照片的解码器和转换工具。
picfit用Go编写的图像大小调整服务器。
pt用Go语言编写的路径跟踪引擎。
resize使用常见的插值方法为Go 调整图像大小。
rez在纯Go和SIMD中调整图像大小。
smartcrop查找适合任何图像和尺寸的优质作物。
steganography用于LSB隐写术的Pure Go库。
stegify用于LSB隐写术的Go工具,能够隐藏图像中的任何文件。
svgo用于SVG生成的Go语言库。
tga软件包tga是TARGA图像格式的解码器/编码器。
  • 物联网
说明
connectordb量化自我和物联网的开源平台。
devicesIoT设备库套件,针对x / exp / io进行实验。
eywaProject Eywa本质上是一个连接管理器,用于跟踪连接的设备。
flogoProject Flogo是一个用于IoT Edge应用和集成的开源框架。
gatt盖特是一个围棋包构建低功耗蓝牙外设。
gobotGobot是机器人技术,物理计算和物联网的框架。
huego适用于Go的飞利浦Hue扩展客户端库。
iotIoT是用于实现Google IoT Core设备的简单框架。
mainflux工业物联网消息和设备管理服务器。
periph外设I / O与低级别的主板设备接口。
sensorbee用于物联网的轻量级流处理引擎。
  • JSON格式
说明
ajson具有JSONPath支持的golang的抽象JSON。
gjo用于创建JSON对象的小型实用程序。
GJSON使用一行代码获取JSON值。
go-jsonerrorGo-JsonError可让我们轻松创建遵循JsonApi规范的json响应错误。
go-respondGo包,用于处理常见的HTTP JSON响应。
gojqGolang中的 JSON查询。
gojson从示例JSON自动生成Go(golang)结构定义。
JayDiff用Go编写的JSON diff实用程序。
jettison用于Go的高性能,无反射JSON编码器。
JSON-to-Go将JSON转换为Go结构。
json2go高级JSON到Go结构转换。提供可以解析多个JSON文档并创建适合所有JSON的结构的包。
jsonapi-errors根据JSON API错误参考进行绑定。
jsonf突出显示格式和获取JSON的结构查询的控制台工具。
jsongoFluent API,可以更轻松地创建Json对象。
jsonhal简单的Go包,用于将自定义结构编组为HAL兼容的JSON响应。
kazaam用于JSON文档的任意转换的API。
mp简单的cli电子邮件解析器。当前,它使用标准输入并输出JSON。
  • 机器学习
说明
bayesian贝叶斯分类为Golang天真。
CloudForest快速,灵活,多线程的决策树集合,用于纯Go中的机器学习。
eaopt进化优化库。
evoli遗传算法和粒子群优化库。
fonet用Go编写的深度神经网络库。
go-clusterk模式和k-原型聚类算法的Go实现。
go-deepGo中功能丰富的神经网络库
go-fann快速人工神经网络(FANN)库的Go绑定。
go-galib用Go / golang编写的遗传算法库。
go-prGo lang中的模式识别包。
gobrain用go语言编写的神经网络
godist各种概率分布及相关方法。
gogaGo的遗传算法库。
GoLearn用于Go的通用机器学习库。
golinearGo的liblinear绑定。
GoMindGo中的简单神经网络库。
gomlGo中的在线机器学习。
Goptuna用于Go语言编写的黑盒函数的贝叶斯优化框架。一切都会被优化。
goRecommend用Go编写的推荐算法库。
gorgonia基于图形的计算库,例如Theano for Go,它提供了用于构建各种机器学习和神经网络算法的原语。
gorse基于Go编写的协作过滤的离线推荐系统后端。
goscore用于PMML的Go Scoring API。
gosseract使用Tesseract C ++库的OCR(光学字符识别)软件包。
libsvm基于LIBSVM 3.14 libsvm的golang版本衍生作品。
neat用于增强拓扑神经演化(NEAT)的即插即用,并行Go框架。
neural-gogo-在Go中实现的多层感知器网络,通过反向传播进行训练。
ocrserver一个简单的OCR API服务器,非常容易被Docker和Heroku部署。
onnx-go转到开放神经网络交换(ONNX)的接口。
probab概率分布函数。贝叶斯推断。用纯Go语言编写。
regommend建议和协作过滤引擎。
shield贝叶斯文本分类器,具有灵活的标记器和Go的存储后端。
tfgo易于使用的Tensorflow绑定:简化了官方Tensorflow Go绑定的使用。在Go中定义计算图,加载并执行经过Python训练的模型。
VarisGolang神经网络。
  • 金融
说明
uniofficePure Go库,用于创建和处理Office Word(.docx),Excel(.xlsx)和Powerpoint(.pptx)文档。
excelizeGolang库用于读取和写入Microsoft Excel™(XLSX)文件。
go-excel一个简单而轻便的阅读器,可以将类似于related-db的excel读取为表格。
goxlsxwriterlibxlsxwriter的Golang绑定,用于编写XLSX(Microsoft Excel)文件。
xlsx用于简化在Go程序中读取Microsoft Excel最新版本使用的XML格式的库。
xlsx在Go程序中快速/安全地读取/更新您现有的Microsoft Excel文件的方法。
  • 自然语言处理
说明
getlang快速自然语言检测程序包。
go-i18n用于处理本地化文本的软件包和一个随附工具。
go-mystemCGo与Yandex.Mystem的绑定-俄罗斯形态分析仪。
go-nlp用于处理离散概率分布的实用程序和其他可用于执行NLP工作的工具。
go-pinyinCN Hanzi至Hanyu拼音转换器。
go-stem搬运程序阻止算法的实现。
go-unidecodeUnicode文本的ASCII音译。
go2vec用于word2vec嵌入的阅读器和实用程序功能。
gojieba这是一个围棋实施解霸其中中国分词算法。
golibstemmer雪球库libstemmer库的绑定,包括porter 2。
gotokenizer基于字典和Goram语言的Bigram语言模型的标记器。(现在仅支持中文细分)
gounidecodeGo的Unicode音译器(也称为unidecode)。
gse进行有效的文本分割;支持英语,中文,日语等。
icuCGO结合为ICU4C C库检测和转换功能。保证与版本50.1兼容。
kagome用纯Go语言编写的JP形态分析仪。
libtextcatlibtextcat C库的Cgo绑定。保证与2.2版兼容。
MMSEGO这是MMSEG的GO实现,它是中文分词算法。
nlp从字符串中提取值,并用nlp填充您的结构。
nlp支持LSA(潜在语义分析)的自然语言处理库。
paicehuskPaice / Husk提取算法的Golang实现。
petrovich彼得罗维奇(Petrovich)是库,在给定的语法情况下使用俄语名称。
porter这是Martin Porter的Porter干算法的C实现的相当简单的移植。
porter2非常快的Porter 2 提取器。
prose用于文本处理的库,支持标记化,词性标记,命名实体提取等。仅限英语。
RAKE.go快速自动关键字提取算法(RAKE)的Go端口。
segment用于执行Unicode标准附件#29中所述的Unicode文本分段的Go库
sentences句子标记器:将文本转换为句子列表。
shamojishamoji是用Go编写的单词过滤程序包。
snowballGo的雪球茎端口(cgo包装器)。提供单词词干提取功能Snowball本机。
stemmer用于Go编程语言的Stemmer软件包。包括英语和德语词干。
textcatGo软件包,用于基于n-gram的文本分类,并支持utf-8和原始文本。
whatlanggoGo的自然语言检测程序包。支持84种语言和24种脚本(书写系统,例如拉丁语,西里尔字母等)。
when自然EN和RU语言日期/时间分析器具有可插拔的规则。
  • 网络
说明
arp包arp实现ARP协议,如RFC 826中所述。
buffstreams通过TCP流化协议缓冲区数据变得容易。
canopusCoAP客户端/服务器实施(RFC 7252)。
cidrangerGo的快速IP到CIDR查找。
dhcp6软件包dhcp6实现了DHCPv6服务器,如RFC 3315中所述。
dns使用DNS的Go库。
ether用于发送和接收以太网帧的跨平台Go软件包。
ethernet程序包ethernet实施IEEE 802.3以太网II帧和IEEE 802.1Q VLAN标签的封送处理。
fasthttp软件包fasthttp是Go的一种快速HTTP实现,比net / http快10倍。
fortio负载测试库和命令行工具,高级回显服务器和Web UI。允许指定设置的每秒查询负载,并记录延迟直方图和其他有用的统计数据并对其进行图形化。Tcp,Http,gRPC。
ftp程序包ftp实现RFC 959中所述的FTP客户端。
gevgev是基于Reactor模式的轻量级,快速,无阻塞的TCP网络库。
gmqttGmqtt是一个灵活的高性能MQTT代理库,它完全实现了MQTT协议V3.1.1。
gnetgnet是一个高性能的,用纯围棋轻便,非阻塞,事件循环网络库。
gNxI使用gNMI和gNOI协议的网络管理工具的集合。
go-getterGo库,用于使用URL从各种来源下载文件或目录。
go-powerdnsGolang的 PowerDNS API绑定。
go-stunSTUN客户端的Go实现(RFC 3489和RFC 5389)。
gobgp使用Go编程语言实现的BGP。
golibwireshark软件包golibwireshark使用libwireshark库来解码pcap文件并分析解剖数据。
gopacketGo库,用于使用libpcap绑定进行数据包处理。
gopcaplibpcap的包装器。
goshark软件包goshark使用tshark解码IP数据包并创建数据结构以分析数据包。
gosnmp用于执行SNMP操作的本机Go库。
gosocsvr套接字服务器变得简单。
gotcp用于快速编写tcp应用程序的Go软件包。
grab用于管理文件下载的软件包。
graval实验性FTP服务器框架。
HTTPLabHTTPLabs可让您检查HTTP请求并伪造响应。
iplib受python ipaddress和ruby ipaddr启发而使用IP地址(net.IP,net.IPNet)的库
jazigoJazigo是用Go语言编写的工具,用于检索多个网络设备的配置。
kcp-goKCP-快速可靠的ARQ协议。
kcptun基于KCP协议的极其简单和快速的udp隧道。
lhttp强大的websocket框架,可更轻松地构建IM服务器。
linkio用于读取器/写入器接口的网络链接速度模拟。
llb这是代理服务器的非常简单但快速的后端。对于零内存分配和快速响应的快速重定向到预定义域很有用。
mdnsGolang中的简单mDNS(多播DNS)客户端/服务器库。
mqttPahoPaho Go客户端提供了一个MQTT客户端库,用于通过TCP,TLS或WebSockets连接到MQTT代理。
NFF-Go用于快速开发云和裸机(以前的YANFF)的高性能网络功能的框架。
packet通过TCP和UDP发送数据包。如果需要,它可以缓冲消息和热交换连接。
peerdiscoveryPure Go库,用于使用UDP多播的跨平台本地对等发现。
portproxy简单的TCP代理,它将不支持它的API添加到CORS支持中。
publicip软件包publicip返回您的面向公众的IPv4地址(互联网出口)。
quic-go在纯Go中实现QUIC协议。
raw包raw允许在设备驱动程序级别为网络接口读取和写入数据。
sftp程序包sftp实现SSH文件传输协议,如https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt
ssh用于构建SSH服务器的高级API(包装crypto / ssh)。
sslb这是一个超级简单的负载均衡器,只是一个实现某种性能的小项目。
stun实施RFC 5389 STUN协议。
tcp_server用于更快地构建tcp服务器的Go库。
tspoolTCP库使用工作池来提高性能并保护您的服务器。
utp围棋UTP微传输协议的实现。
water简单的TUN / TAP库。
webrtcWebRTC API的纯Go实现。
winrm进入WinRM客户端以在Windows计算机上远程执行命令。
xtcp具有同步全双工通信,安全关闭,自定义协议的TCP Server Framework。
  • 视频
说明
go-astisub在GO中处理字幕(.srt,.stl,.ttml,.webvtt,.ssa / .ass,图文电视,.smi等)。
go-astits在GO中本地解析和解复用MPEG传输流(.ts)。
go-m3u8Apple m3u8播放列表的解析器和生成器库。
goavFFmpeg的综合Go绑定。
gstGStreamer的绑定。
libgosubsgo的字幕格式支持。支持.srt,.ttml和.ass。
libvlc-golibvlc 2.X / 3.X / 4.X的绑定(由VLC媒体播放器使用)。
m3u8Apple HLS的M3U8播放列表的解析器和生成器库。
v4l用Go编写的Linux视频捕获库。



开源书籍

书籍名推荐理由
Go palyground不用搭建本地 Go 环境,在线就编写 Go 的代码
Go实战开发作者是著名的 Go 开源项目 beego 的作者,他的最佳实践非常值得阅读
Go Web 编程跟前面一本书作者是同一位,讲的是web开发
Go语言标准库对标准库的介绍
Go入门指南比较适合新手,内容相对基础一些
Go语言圣经书如其名
Go语言中文网找对圈子,学的更快
菜鸟教程这个网站非常适合快速上手某门语言
Go语言高级编程内容适合进阶
go语言原本欧神出品,虽然号称进度只有9.9%/100%,但不妨碍它的优秀,值得一看
golang设计模式设计模式 Golang实现,《研磨设计模式》的golang实现
Go语言四十二章经可以对比查漏补缺
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码讲故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值