Skip to content

Latest commit

 

History

History
1631 lines (1394 loc) · 106 KB

README.md

File metadata and controls

1631 lines (1394 loc) · 106 KB

Go-Awesome

Go Organize excellent language resources to speed up project implementation🏃

Stable update on GitHub, please click star if you feel good ❤️

If you reprint and share, please keep the source, thanks 😆

GitHub: https://github.com/NightKari/go-awesome


Official website: https://golang.org

Domestic official website mirror (quick access): https://golang.google.cn

GitHub: https://github.com/golang/go

Developer platform: https://go.dev

Wiki: https://github.com/golang/go/wiki

Official Blog: https://blog.golang.org

Guiding Principles

  • Simplicity

    Complexity makes readable programs unreadable, complexity kills many software projects.

  • Readability

    > The code is visible to people and it takes longer to read the code than to write it. Programs need to be maintainable, and that readability is the first step.
    
  • Productivity

    > Most of the work can be done easily and conveniently with numerous tool sets and basic libraries.
    > The compilation speed is fast enough to reach the efficiency of dynamic languages, but it does not have the problem of dynamic languages' unreliability.
    > Self-contained programming specifications that make team code consistent and help developers discover and avoid potential bugs.
    

Awesome

Go-Organization

Guru in the Go language or organization of a good Go project

Big Cow

  • mattn - wrote hundreds of Go projects, rich in high quality projects
  • Unknwon - author of gogs/macaron and other projects, translator of "The Way to Go"
  • Jinzhu - Author of Gorm/QOR etc.
  • valyala - author of fasthttp/fastjson etc.
  • vmihailenco - go-redis/go-pg and other authors
  • kataras - author of iris
  • bep
  • spf13
  • juju
  • tidwall

To Organize

Documentation

Guide

Article

Paid Tutorials

Finished Items

  • Shiori - bookmark management
  • studygolang - Go Language Chinese Network
  • mkcert - Tool to generate a local HTTPS encryption certificate
  • Rainbond - Open source PaaS based on container technologies like Docker and Kubernetes
  • NYADB2 - Relational database implemented by Go, worth learning
  • EiBlog - Blog
  • pan-light - Baidu network disk client with unlimited speed, developed on the basis of Go + Qt5
  • BaiduPCS-Go - Baidu Network Drive Client (command line)
  • daily-warm - Send regular emails to people you care about every day
  • pipe - blogging platform
  • mdr - Markdown reading tool under the command line
  • miniflux - Feed reader
  • golinks - Create custom bookmarks, commands, searches and more
  • Liandi Notes - Application for desktop notes
  • wayback - Website snapshot backup
  • bbs-go - open source community
  • OpenSCRM - Enterprise WeChat traffic management system for private domains based on Go and React
  • answer - Q&A community

Static Site Generator

Learning Content

  • 1m-go-websockets - This project shows how to write a server in Go that has over a million "websockets"-1-GB- server can serve
  • By example - Learn "By example".
  • IAM - Identity and Access Management System (teaching project)
  • 100-Go Mistakes - 100 common Go Mistakes

Open source library

Web Framework

Business Framework

  • YAO - Use JSON to create database models, write API interfaces and describe the application engine of the management background interface
  • GoAdminGroup/go-admin - Rapid development framework for background administration, similar to Laravel-Admin
  • wenjianzhang/go-admin - Background framework based on Gin + Vue
  • gin-vue-admin - Background framework based on Gin + Vue
  • goxygen - A full stack application builder based on Go, React and MongoDB technologies
  • nging - General framework for managing the Go language background
  • snake - Business API framework
  • PocketBase - a single file backend service development framework with background management panel, file and permissions management and built-in SQLite database, using Dart and JS SDK for Rapid supports development of APP

Project Skeleton

DDD Framework

TCP Frame

  • zinx - TCP Concurrent Server Framework

Middleware

  • Negroni - Web middleware
  • csrf - CSRF middleware
  • handlers - A collection of useful handlers for Go's net/http package

Concurrency

Command Line

Parameter Analysis

  • urfave/cli - tool for building command line programs
  • Cobra - command line buildpack
  • flaggy - command parameter analysis
  • pflag - Command line parameter handling
  • kong - command line parsing
  • clop - command line parsing package
  • go-flags - parsing of command line parameters
  • mow.cli
  • go-arg - Parses command line parameters based on structure tag

Output Display

  • progressbar - print a progress bar on the terminal
  • cheggaaa/pb - Terminal progress bar
  • mpb - supports multiple progress bars
  • Color - color of command line text
  • gookit/color - command line color library
  • termui - Terminal Dashboard
  • tui - Terminal UI
  • termenv - Extended ANSI style and color support for terminal applications
  • asciigraph - renders ASCII characters in the terminal
  • spinner - A controller that covers 70+ icons or progress bars
  • tablewriter - Output table content in terminal
  • PIXterm - Drawing in command line terminal
  • WTF - a command line information dashboard that can customize the display content
  • termdash - Dashboard system based on Go Terminal
  • bubbles - TUI components
  • bubbletea - TUI framework
  • PTerm - supports displaying terminal output such as charts, tables, progress bars, trees, etc.
  • Lipgloss - Terminal layout, style
  • Gum
  • glow - Terminal rendering displays markdown
  • [slides] (https://github.com/maaslalani/slides) - Terminal rendering displays markdown
  • tview - Terminal UI
  • ASCIIPlayer - Output image or video via ASCII in terminal, supports PNG, JPEG, GIF, MP4, AVI and other formats
  • go-pretty - terminal rendering table, list, progress bar, etc.

Other

  • gosu - Run scripts with specific user rights
  • gotop - similar top system monitor display
  • go-colorable - Colorable Writer for Windows
  • go-isatty - TTY environment assessment
  • fzf - Terminal fuzzy query artifact, supports multiple platforms
  • go-daemon - daemon process package
  • go-prompt - Interactive input from the command line
  • peco - Interactive filter tool
  • pty - PTY for Go
  • vtclean - Parses plain text from terminal output string
  • Survey - interactive input

Terminal Tools

  • vgrep - grep which supports scroll pagination
  • GoTTY - Real-time sharing via web-based command line
  • Jump - Quickly jump into the directory according to the habit
  • GoFish - A cross-platform software management tool inspired by Homebrew supporting Linux and Windows
  • viddy - Improved watch command
  • miller - a sed, awk, cut, join and sort-like tool for manipulating data based on named indexes
  • assh - SSH extension tool
  • duf - better disk usage tool than df

Redirect

The Internet

  • DNS - DNS library
  • CoreDNS - DNS servers
  • RoadRunner - PHP application server, process manager, load balancer, used to replace "Nginx + FPM".
  • FrankenPHP - PHP application server
  • GoReplay - Traffic capture and replay
  • Sharingan - Didi open source traffic recording and playback tool
  • Glorp - CLI tool for HTTP interception and replay
  • p2pspider - torrent sniffer
  • torrent - BitTorrent related tool library
  • rain - Bittorrent client and library
  • httpteleport - Teleports 10Gbps HTTP traffic over 1Gbps networks
  • FIND3 - WiFi device detection
  • SubFinder - subdomain discovery tool
  • ggz - short URL service
  • httpstat
  • grab - file download
  • go-getter - can download files or directories from different sources using URL as main input form
  • go-netty - network framework
  • gnet - Event driven Go network framework
  • netpoll - Non-blocking I/O Net-Library focused on RPC scenarios
  • httplab - The interactive web server
  • yamux - multiplexers
  • sftp - SFTP support for the "go.crypto/ssh" package.
  • goftp - FTP client
  • evio - Event driven network framework (reactor mode)
  • gaio - Event driven network framework (Proactor mode)
  • httpretty - Issues HTTP requests on the terminal
  • blocky - Block ads as LAN DNS proxy
  • lossy - simulates bandwidth, latency and packet loss for net.PacketConn and net.Conn interfaces
  • go-libp2p - P2P
  • go-ipfs-api - IPFS
  • gomobile-ipfs - Provide IPFS network access support for mobile devices
  • go-multiaddr - multiaddr
  • kcp-go - Reliable UDP communication package
  • gliderlabs/ssh - Just create an SSH server like net/http
  • netaddr - Processing of network addresses
  • sx - command tool for scanning networks
  • echoip - IP address lookup service
  • EasyTCP - TCP server framework
  • GoPacket - network capture packet capture
  • croc - transfer files between two computers
  • cmux - monitor the same port, start multiple log services
  • GeoIP2 Reader for Go - Parsing and reading of MaxMind GeoLite2 and GeoIP2 databases

####LDAP

Network Proxy

  • Caddy - Nginx-like web server
  • Traefik - reverse proxy and load balancing
  • snail007/goproxy - high performance proxy server implemented by golang
  • ProxyPool - Collect free proxy resources to provide effective IP proxy for crawlers
  • frp - A high performance reverse proxy application that can be used for intranet penetration
  • nps - A lightweight, high performance, powerful intranet penetration proxy server
  • Pomerium - identity-based reverse proxy
  • V2Ray
  • V2Fly - Community version of V2Ray
  • Tailscale - WireGuard solution
  • Clash - Multi-platform proxy client supporting multiple protocols
  • elazarl/goproxy - HTTP proxy
  • oxy - Go middleware for HTTP servers and proxies
  • ouqiang/goproxy - Go HTTP(S) proxy library, supports man-in-the-middle proxy to decrypt HTTPS

HTTP Print Test

###HTTP

WebSocket

Instant Messages

  • Centrifugo - Real-time messaging server that can be used in conjunction with application backends written in any language
  • goim - supports clustered IM and real-time push services
  • Tinode - Instant messaging server, transported via protocols like websocket/JSON or gRPC/TCP
  • WebRTC - WebRTC implementation
  • Berty - Secure peer-to-peer communication software
  • Keybase - Instant messaging tool Keybase Full Platform Client

Gateway

Serialization

Unzip

  • snappy - Snappy for Go
  • cae - implement ZIP/TAR.GZ decompression
  • archiver - Unpack archive with multi-format support
  • compress - Optimized compression packages
  • Brotli

RPC

Post Office

Message Queue

  • NSQ - Real-time distributed messaging platform
  • NATS - cloud-native messaging middleware
  • amqp - AMQP 0.9.1 client
  • sarama - Kafka client

Files/Storage

  • MinIO - object storage server
  • rclone - Sync files between different cloud storages
  • Syncthing - File synchronization
  • fsnotify - File system monitoring tool
  • reflex - monitors file changes and executes commands
  • gohttpserver - HTTP static file server
  • XLSX - Excel reading and writing package
  • Excelize - 360 Open Source Excel Toolkit
  • gopdf - PDF generation
  • rsc/pdf - PDF reader
  • SeaweedFS - Distributed file system
  • go-fastdfs - Distributed file storage service
  • Dragonfly - P2P based distributed file system
  • filetype - detect file type
  • Afero - file editing package
  • fsync - file/directory synchronization
  • filebrowser - web file browser
  • Bigfile - file transfer management system
  • filetype - File type and MIME detection
  • go-app-paths - Get directory files across platforms
  • copy - copy folder
  • lakeFS - Git-like file object storage
  • Duplicacy - a lock-free cloud backup tool that supports almost all storage methods
  • CasaOS - family cloud system

Template Engine

Code Generation

Word Processing

Discount

HTML/CSS

Other

  • go-runewidth - character length calculation
  • gpy - Pinyin tool to convert Chinese characters to Go language
  • go-hashids - Go version of Hashids
  • go-pinyin - Go version of Chinese Pinyin conversion tool
  • mahonia - Character set encoding conversion
  • pangu.go - Go version of pangu, add spaces between Chinese and English
  • goorgeous - A Go-ORG syntax parser for HTML
  • sergi/go-diff - Go version of the diff toolkit
  • sourcegraph/go-diff - Go version of the diff toolkit
  • Chroma - Code syntax highlighting
  • syntaxhighlight - code highlighting
  • kyokomi/emoji
  • enescakir/emoji
  • golang/freetype - Freetype font grid
  • prose - Natural language processing library
  • minify - Compression of static web resources (HTML/JS/CSS/JSON/XML/SVG)
  • Inflection - Pluralizes and singularizes English nouns
  • Autocorrect - Automatically add meaningful spaces between Chinese and English and correct capitalization of proper names
  • bleve - modern text indexing
  • etree - XML parsing and generation
  • go-xml
  • Feeds - RSS feed generation
  • gofeed - Content analysis of RSS and Atom feeds
  • Sitemap - sitemap.xml generation
  • yarr - Software for reading RSS
  • gogrep - Browse the Go source code using the syntax tree
  • PipeIt - Text conversion, cleaning and extraction tool
  • regexp2 - Fully functional regular expression engine. If you are not satisfied with the standard library regexp, you can try using Regexp2
  • html2article - html2article implementation based on text density
  • hostctl - hosts command line management tool
  • go-shellwords - parses the fields on the command line
  • woke - Check text files for discriminatory words
  • go-password-validator - password strength validator
  • xurls - Extract URLs from text
  • whatlanggo - Natural Language Recognition
  • go-enry - Detect programming language
  • fuzzy - String fuzzy matching
  • godlp - data desensitization
  • Zoekt - text search engine

Documentation

Mathematical Calculations

  • decimal - Solve the problem of precision of floating point calculation
  • fixed
  • apd - decimal pack
  • mathfmt - Convert LaTeX syntax comments to math formula format
  • q - quantum computer simulator

Appointment Time

  • now
  • when - natural datetime parsing
  • Carbon - Go implementation of the Carbon time processing library
  • strftime - time formatting
  • dateparse - Parses all unknown time strings in format

Construction

Crawlers

  • Crawlab - Golang based distributed crawler management platform, supports Python, NodeJS, Go, Java, PHP and other programming languages and multiple crawler frameworks
  • Colly - web crawler framework
  • Pholcus - Supports distributed crawler software with high concurrency
  • go_spider
  • Muffet - Website link checker
  • [Creeper] (https://github.com/wspl/creeper)
  • Geziyor - A fast crawler framework that supports JS rendering
  • Apollo - a crawler tool
  • Ferret - Declarative web scraping
  • gocrawl
  • Antch
  • katana - crawler and spider framework

Database

SQL Analysis

Distributed Transaction

  • go-saga - Saga distributed transaction implementation
  • DTM - Cross-language distributed transaction management service supporting TCC, Saga, XA, etc.

Database Related

  • usql - A command line tool that supports almost all SQL and NoSQL databases
  • GORM - GORM V2 + GORM V1 + gorm2sql - generate table creation statement according to model struct + gorm-sharding - SQL interception, AST parsing, sub-table routing, self-increasing primary key stuffing based on conn layer, transparent to users
  • Xorm
  • XormPlus - A custom enhanced version of Xorm
  • GoRose
  • sqlx - database/sql extension pack
  • dbq - database operations
  • gendry - Didi open source SQL builder
  • ozzo-dbx
  • Squirrel - Fluent SQL Builder
  • qb - the database toolkit for go
  • redigo - Redis client
  • go-redis
  • mgo + globalsign/mgo - The MongoDB driver for Go + mgo user guide
  • kingshard - MySQL proxy
  • SOAR - an automated tool for optimizing and rewriting SQL
  • SQLE - SQL Audit Tool
  • Vitess - A database solution for provisioning, scaling and managing large clusters of MySQL instances
  • gh-ost - GitHub open source tool to change MySQL table structure online
  • SQLer - Write APIs with direct SQL queries without problems, let's think about SQL
  • gocraft/dbr
  • Gaea - Xiaomi open source database middleware based on MySQL protocol
  • OctoSQL - SQL query tool supporting multiple databases
  • goose - database migration tool
  • migrate - database migration tool
  • dbmate - database migration tool
  • ent - An entity framework for Go
  • godb - a Go query builder and struct mapper
  • go-nulltype
  • go-mysql - MySQL toolset
  • SQLittle - Read in SQLite files
  • Bifrost - Heterogeneous middleware to sync MySQL with Redis, ClickHouse and other services
  • elasticsql - Convert SQL to Elasticsearch DSL
  • POP - A database ORM tool based on the sqlx package
  • REL - Modern database access layer for Go
  • RDB - Redis RDB file parsing and generation tool, supports converting JSON, converting AOF, finding big key, generating RDB files and drawing storage flame diagrams, etc.
  • Bytebase - Web-based, zero-configuration and zero-dependency database schema modification and version control management tool

Database Client

Database Engine

  • etcd - Distributed KV storage
  • InfluxDB - time series database
  • Prometheus - service monitoring system and time series database
  • tstorage - time series database
  • Thanos - Prometheus support for simplified deployment, high availability and distributed storage
  • CockroachDB - Distributed SQL database
  • Cayley - graph database
  • RadonDB - A new generation of distributed relational databases based on MySQL
  • TiDB - Distributed relational database compatible with MySQL protocol
  • AresDB - Uber's open-source GPU-driven storage and query engine for real-time analytics
  • leveldb - Go implementation of LevelDB
  • Dgraph - Distributed graph database
  • rqlite - A lightweight distributed relational database based on SQLite
  • gaeadb
  • BadgerDB - KV database, supports ACID transactions
  • LBADD - Distributed SQL database implemented in Go
  • go-memdb - In-memory database based on immutable radix trees
  • VectorSQL - DBMS database for IoT and Big Data, similar to ClickHouse
  • BuntDB - A memory-based KV database that supports disk persistence and ACID transactions
  • TinySQL - Small distributed relational database
  • Tile38 - GEO database
  • Redcon - A custom Redis service compatible with the Redis protocol, using BuntDB and Tile38 for storage
  • genji - Documented embedded database
  • Dolt - Operate database like Git
  • rosedb - A clean and efficient KV database supporting multiple data structures
  • LinDB - Distributed time series database
  • mandodb - an example project, the author introduces how to implement a small time series database from scratch
  • go-mysql-server - A database engine that analyzes MySQL protocol and optimizes SQL
  • Milvus - vector database
  • FerretDB - MangoDB alternative
  • LotusDB - fast KV storage engine compatible with LSM and B+ Tree

Cache

Search Recommendations

  • wukong - full-text search engine
  • go-elasticsearch - Official ES Client
  • elastic - Elasticsearch client
  • go-mysql-elasticsearch - Sync MySQL data with Elasticsearch
  • gse - word segmentation in Go language
  • sego - Go to Chinese word segmentation
  • gojieba - The Go language version of Chinese word segmentation for "破巴"
  • Riot - full-text search engine
  • simplefts - super simple full-text search engine implementation
  • Blast - full-text search (Archived)
  • Fuzzy Search - Text fuzzy search
  • Ginster - One-node training and distributed predictive recommender engine
  • gofound - full-text search engine
  • ZincSearch - full-text search engine
  • Bluge - Text segmentation

Form

Auth

Encrypt And Decrypt

  • 2fa - Two-factor authentication on the command line
  • age - file encryption tool (library)

Video

  • goav - FFmpeg video processing
  • lal - live streaming network transmission server
  • bililive-go - live recording tool
  • screego - Share developer screen via browser
  • livego - live server
  • Monibuca - streaming server development framework
  • olive - supports live recording on Huya and other platforms

Graphics Processing

  • Barcode - barcode/QR code generator
  • picfit - Image editing, cropping, management server
  • gmfs - image editing, cropping, management server
  • besticon - favicon service
  • Caire - image editing library
  • Imaging - imaging library
  • gocaptcha - verification code generation
  • base64Captcha - verification code
  • go-is-svg - Check if it is an SVG image
  • identicon - Generate nice random avatar for user based on arbitrary data like user's IP, mailbox name etc.
  • prominentcolor - Identify the main color of an image
  • dchest/captcha - generates and verifies image or audio captcha
  • bimg - image processing
  • imaginary - image processing service
  • Primitive - Draw graphics with primitive geometry
  • orly - create your own O'RLY animal book cover
  • smartcrop - Smart cropping of images
  • gift - image filter
  • Germanium - Generate images for code
  • Go Graphics - 2D image rendering
  • [canvas] (https://github.com/tdewolff/canvas) - vector drawing
  • Formulae - Mathematical formula analysis, calculation, chart creation
  • imager - image processing server
  • Triangula - Add a triangular filter to the image
  • D2 - A charting scripting language that converts text to graphics
  • ImGo - Image processing library with concise and chain calls

Image Recognition

Charts

Build And Compile

  • Mage - a Make/Rake-like build tool using Go
  • GoReleaser - Tool for Go multiplatform binary packaging and homebrew release support
  • goxc - Cross-platform compilation tool (Since version 1.5 has built-in cross-compilation, it is no longer maintained)
  • Task - Make-like build tool
  • codegangsta/gin - hot compilation tool
  • Air - hot compilation tool
  • gowatch - hot compilation tool
  • Fresh - hot compilation tool
  • dh-make-golang - Automatically builds Debian packages
  • gobinaries - Compile and install programs written in Go without installing Go
  • NFPM - deb, rpm, apk and other packaging tools
  • Gox - Go to the cross compilation tool

Static Resource Embedding

  • pkger - Package static files into Go binaries
  • mewn - Static files are embedded and packaged in binaries
  • static - static file embedding
  • go.rice
  • go-bindata - Converts static files to Go code files
  • vfsgen - Pack static files into type "http.FileSystem" for access
  • packr

Elegant Upgrade

Code Analysis

  • reviewdog - code review robot
  • revive - code inspection analysis
  • GolangCI-Lint - Analysis tool to check code quality
  • errcheck - detects unhandled errors (Errors)
  • Staticcheck - A set of static Go code analysis tools
  • Golint - Google's official code quality check tool
  • GoReporter
  • go-critic
  • gocloc - Statistics on the number of lines of code by language
  • coca - code statistics analysis
  • Go Report Card - Go project quality analysis report tool
  • ddsv-go - deadlock detection tool
  • golang/perf - official quantitative performance analysis tool
  • GoPlantUML - Generate PlantUML class diagrams for Go projects
  • gosize - Analyze the size of the Go binary
  • shotizam - Analyzing the size of Go binaries and outputting to SQLite3
  • goconst - Finds repeating strings that can be replaced with constants
  • sploit - library to support binary analysis and usage
  • perf - performance utilities for Go
  • fgprof - Go to the profiling tool
  • conprof - Coroutine Analysis
  • statsview - Visual analyzer for real-time Go runtime stats
  • codesearch - code search tool
  • Pyroscope - Visual tool for monitoring program performance, supports multiple languages
  • gosec - Code security check tool
  • gokart - Static code analysis tool
  • gofumpt - gofmt advanced code formatting tool
  • NoVerify - PHP code analysis tool

Debugging

  • go-spew - variable printing tool
  • Delve - debug tool
  • gdlv - Delve interface version
  • Weaver - Tracking Go program execution links
  • repr - Variable printing tool
  • pp - tool for printing color variables
  • ffmt - Variable printing tool
  • gops - Go program monitoring and debugging tool officially developed by Google
  • pprof
  • go-callvis - Visualize the call graph of a Go program
  • q - Automatically print variable types and format the output
  • Litter
  • RDebug - A handy tool for RD R&D, self-testing and debugging, open source by Didi
  • debugcharts - Visual memory usage debugging tool
  • gcvis - Visualize gctrace in real time
  • package/profile
  • statsviz - View runtime statistics of Go application (GC, MemStats, etc.) in real-time in browser
  • autopprof - automatic profiling pprof
  • stack - Capture, edit and format call stack information
  • pretty - Print variable
  • go-deadlock - Include (RW)Mutex and provide deadlock detection
  • mmcloughlin/profile
  • gcnotifier - notify when GC occurs
  • grmon - command line monitor showing goroutines
  • valast - outputs the go/ast structure of variables, similar to PHP's var_export function
  • lensm - Go assembly and source code comparison display tool

Test

Error Handling

  • Error
  • errorx
  • errwrap - Go tool for wrapping and debugging with new %w verb directive
  • erris - linters for "errors.Is" and "errors.As".
  • eris - aims to give you more control over error handling through error packaging, stack traces and output formatting
  • errlog - Use static and stack trace analysis to quickly determine which function call caused the error
  • juju/errors
  • go-fault - Officially produced by GitHub, a fault injection library based on standard library http middleware
  • merry - support stack, status code error handling
  • cockroachdb/errors - A powerful alternative error handling package for errors and github.com/pkg/errors
  • go-multierror - Support error list

Security

  • Kunpeng - Open source POC detection framework
  • nmap - Security audit tool nmap development kit
  • Hetty - HTTP security research toolkit, HTTP proxy interception with web interface and proxy log viewer
  • Fibratus - Windows kernel exploit and tracking tool
  • Secure - HTTP security middleware

System Message

  • go-hardware - a package that collects a bunch of information about hardware
  • cpuid - CPU information
  • gopsutil - ps function pack
  • go-sysinfo - system information
  • go-locale - Cross-platform speech recognition library
  • go-ps - System process information
  • psgo - ps command implementation
  • ghw - Hardware information

UUID

  • go.uuid - UUID library
  • SEQSVR - Distributed ID generation service implemented by Go + MySQL
  • google/uuid - Google's open source UUID package
  • gofrs/uuid
  • Snowflake - Twitter Snowflake IDs
  • sonyflake - Sony's version of Twitter's Snowflake
  • ulid - Universally Unique lexicographically sortable identifier
  • ksuid - K-sortable globally unique IDs

Logs

Monitoring

  • OpenFalcon - Xiaomi's open-source surveillance system
  • Prometheus - service monitoring system and time series database
  • Grafana - Analysis and monitoring platform, supports Graphite, Elasticsearch, OpenTSDB, Prometheus, InfluxDB and other data sources + grabana - Quickly create Grafana dashboards with Go code
  • TeaWeb - A visually intelligent web server that integrates static resources, caching, proxy, statistics and monitoring
  • Jaeger - Distributed tracing system
  • go-osstat - statistics of system indicators
  • graafterm - Metric dashboards on the terminal
  • mymon - Monitoring MySQL operation
  • PingMe - A service availability alert command tool supporting multiple messaging platforms
  • supervisord - Go language implements supervisor

Statistical Analysis

  • Fathom - Website statistics
  • Veneur - Real-time distributed data processing pipeline
  • gonum - in connection with scientific computing

Container Technology

  • moby - Docker
  • docker-ce
  • Rancher - Enterprise-grade, full-stack container management platform
  • Gorsair
  • docui - TUI client for Docker
  • Podman - Manage and run all "OCI" compliant containers and container images
  • Skopeo - image management tool
  • Buildah - A tool for building "OCI" container images
  • go-docker - Implementation of Docker core functions in Go
  • Packer - lightweight image definition tool

Cluster Management

  • Nomad - cluster manager and scheduler
  • OpenShift Origin - Containerized software solution developed by Red Hat

Kubernetes

  • kubernetes - management platform for scheduling containers
  • k0s - the smallest k8s distribution
  • sealos - A command to deploy Kubernetes high availability clusters
  • KubeEye - detects various issues on Kubernetes through configuration rules
  • endpoints-operator - 4-layer LB with inspector for K8S internal services to access external services

Machine Learning

  • goml - machine learning library
  • GoLearn - an out-of-the-box machine learning library
  • glow - An easy-to-use distributed computing system
  • Gobot - language library for robotics and physical computers
  • Olivia - Neural Networks
  • Pico - Pure Go face recognition library for object recognition paper based on pixel intensity comparison
  • tfgo - Tensorflow in Go
  • Prophecis - One-stop cloud-native machine learning platform developed by WeBank in-house
  • AID - Operations Platform for Machine Learning, Discovery, Deployment, Optimization
  • SQLFlow - SQL engine + AI engine

Algorithm

  • GoDS - Go implements various data structures
  • Dragonboat - Raft consensus algorithm library for multiple groups
  • eliben/raft - Raft algorithm
  • hashicorp/raft - Raft algorithm
  • Graft - Raft algorithm
  • golang-lru - implementation of the LRU algorithm
  • tinylru
  • finn - Fast raft framework using Redis protocol for Go
  • xorfilter
  • priyankchheda/algorithms - Go language implementation of various algorithms
  • meow - meow hash
  • basalt - powerful, distributed, dedicated, space-optimized bitmap service to avoid misjudgments by Bloomfilter and CuckooFilter
  • go-blurhash - BlurHash, a hash algorithm for blurring images
  • xxhash - implementation of the xxHash hash algorithm
  • go-multihash - Implementation of various hash algorithms
  • memberlist - A development kit for cluster membership management and member failure detection based on the Gossip protocol
  • Backoff - Exponential backoff
  • FSM - finite state machine

Data Structure

Addiction Injection

JSON

  • GJSON - JSON interpreter
  • SJSON - JSON modification tool
  • fastjson - fast JSON parser and validator for Go
  • jsonparser
  • ffjson
  • json-iterator - Didi open source JSON parser
  • gojsonq - JSON/YAML/XML/CSV and other data queries
  • easyjson
  • go-jsonc - Converts annotated JSON to uncommented
  • jin - JSON manipulation toolkit with standard library and functions like "tidwall/gjson" and "tidwall/sjson".
  • hujson - supports JSON decoding for annotations
  • pkg/json - JSON decoder
  • ColorJSON - Print color JSON in terminal
  • jid - Tool to parse and read JSON data
  • jsonc - supports comments and commas
  • sonic - Bytedance open source JSON parser and modifier
  • go-json
  • jsonquery - XPath syntax query JSON
  • fx - command line JSON display

Dependency Management

  • goproxy.io - GOPROXY proxy service
  • goproxy.cn - Proxy service more suitable for home users
  • Gopm - Go package management tool
  • govendor - package management tool for vendors
  • gom - Management tool for package versions
  • rvflash/goup - Check if the package version is updated
  • owentheal/goup - Switch to managing multiple versions
  • Athens - "GOPROXY" proxy service

Microservices

  • Istio [Chinese documentation] - a large microservice systems management tool
  • goa
  • Micro - Microservice tools
  • Go Micro - Microservice framework
  • Go-Kit - Go microservice toolset
  • GoKit CLI - Go Kit framework
  • gogo
  • go-chassis
  • kites
  • Kratos - B-Station open source microservice framework
  • Temporal - microservice orchestration platform
  • Serf - service orchestration management platform
  • Open Policy Agent - general policy engine, CNCF incubation project
  • gizmo - microservice toolset
  • MOSN - Cloud-native network data plane for edge and service mesh
  • Erda - PaaS that provides enterprise DevOps, microservice governance and multi-cloud management

Serverless

  • OpenFaaS - Serverless Functions Made Easy (FaaS framework for function services)
  • faasd - Lightweight FaaS engine
  • fn - Event-driven FaaS
  • riff - Kubernetes-based FaaS
  • Nuclio - Serverless framework for real-time events and data
  • Flogo - Event driven serverless framework
  • Dapr - Microsoft's open-source microservice components for cloud and edge computing
  • kubeless
  • Fission - Serverless on Kubernetes
  • pulumi
  • Knative
  • fx
  • IronFunctions
  • scholz/faas - Make the function of any package an HTTP interface

Developer

Continuous Integration/Delivery

  • CDS - Continuous Integration Service
  • gopub
  • CodePub
  • syncd - code deployment tool
  • Drone - Docker-based continuous release platform
  • Cyclone - continuous integration and release platform
  • tbls - CI-friendly database documentation tool
  • Woodpecker - Fork from Drone

Git

  • gogs - Git server similar to GitLab
  • Gitea - Git server forked from gogs
  • go-git - Git operations implemented in Go
  • gitin - Commit/Branch/Status Explorer for Git
  • hub - GitHub command line tool
  • git-o-matic - a tool for monitoring git warehouse changes and automatic pull/push
  • gitbase - Query Git logs in SQL
  • git-chglog - Management tool "CHANGELOG".
  • chglog - Management tool "CHANGELOG".
  • lazyhub - Terminal UI client for GitHub
  • goaction - Writing GitHub actions in Go
  • bit - Git command extensions with support for auto-completion of file and branch names, command and flag suggestions
  • go-github - GitHub API operations library
  • askgit - Access Git repository information via SQL
  • git2graph - Generate a structure diagram based on the commit record of the git warehouse
  • lazygit - Git terminal UI
  • gh-dash - GitHub CLI (gh) nice terminal panel

Current Limiter

Translator

  • TinyGo - A Go compiler for microcontrollers, WebAssembly and command line tools
  • minigo - A Go compiler from scratch
  • llir/llvm - LLVM compiler
  • jit-compiler - JIT compiler
  • Go+ - Qiniu Cloud open source data science oriented language, fully compatible with Go language

Interpreter

Language Interpreter

  • participle - Generic custom grammar parsing package
  • GopherLua - VM and compiler for Lua in Go
  • go-lua - A Lua VM in pure Go
  • DCLua - Go Lua Compiler and VM
  • otto - JavaScript interpreter
  • goja - ECMAScript 5.1(+) implementation
  • v8go - Run JavaScript from Go
  • gpython - Python interpreter for Go
  • Grumpy - Convert Python to Go code, open source by Google
  • starlark-go - Starlark in Go
  • avo - x86 assembler builder
  • wagon - WebAssembly interpreter
  • GopherJS - Compile Go code to JavaScript code
  • Yaegi - Go language interpreter
  • properties - Java properties scanner for Go
  • jvm.go - JVM
  • gobasic - A BASIC interpreter written in Golang
  • golisp - Lisp interpreter
  • dst - Go Decorated Syntax Tree
  • mvdan/sh - shell parsing, formatting, interface
  • tdewolff/parse - general purpose lexical analyzer Lexer with built-in support for parsing HTML/CSS/JSON/XML/JS/SVG syntax
  • Joker - Clojure

PHP

Custom Interpreter

  • CUE - Configure Unify Execute (validate and define text-based and dynamic configuration)
  • cel-go - Common Expression Language (Go implementation of CEL)
  • Math-Engine - Mathematical expression analysis and calculation engine library implemented in Go, very suitable for learning syntax analysis
  • Gval - expression calculation
  • Expression Parsing
  • goexp - Recursive descent expression parser in Go
  • goastch - Go to the AST syntax analyzer
  • tdop
  • swallow
  • Anko
  • Expr - Compile and execute expressions in strings
  • Tengo - scripting language written in Go
  • V - language written in Go
  • kumarUjjawal/bison
  • Monkey
  • govaluate
  • [Compiler] (https://github.com/MauriceGit/compiler) - Compiles custom syntax code into X86-64 assembly
  • elvish - Interactive shell language
  • QLBridge - Go to the SQL runtime engine
  • YQL - SQL WHERE style rules engine
  • Flux - InfluxDB data language
  • Spiker - A simple regular expression executor written in Go, supporting custom functions and process control, suitable for scenarios with complex business rules

Code Generation

  • jennifer - Go code generation
  • ifacemaker - generates an interface based on the structure method
  • gg - Go code generation

Editors

Runner

  • gore - Run Go code online
  • nodebook - Run multiple languages online
  • go-pry - Interactively type and run Go code in terminal like Python, R, PHP, etc

Query Language

  • graphql - GraphQL implementation in Go
  • graphql-go
  • GQLEngine - based on the graphql-go implementation
  • RQL - REST resource query language
  • Thunder - GraphQL service building framework
  • gqlgen - package for creating GraphQL servers
  • super-graph - Build complex GraphQL APIs in Go projects without writing any code

Game Related

Desktop Development

GUI

  • Lorca - HTML5 desktop application written in Go that relies on Chrome for UI rendering but does not package Chrome into the application
  • webview - Cross-platform desktop software built with Go/C/C++
  • walk - Windows GUI toolkit
  • go-gtk - Go bindings for GTK
  • andlabs/ui - On-board GUI library for Go
  • fyne - Material design style GUI
  • go-gl - Go bindings for OpenGL (generated via glow)
  • therecipe/qt - Qt-based cross-platform UI package
  • giu - Cross-platform GUI framework based on Dear ImGui
  • go-app - A WebAssembly framework for building GUI apps using Go, HTML and CSS
  • wails - Build desktop applications using Go and web technologies
  • chromedp - Chrome DevTools browser-driven protocol implemented in pure Go language that can be used in crawler, anti-crawler, testing and other scenarios
  • Rod - A devtools driver designed to simplify automation and crawling that uses the browser's programmatic devtools interface to control the browser
  • go-astilectron - Cross-platform development based on Electron
  • Gio - Cross-platform UI framework for mobile applications
  • nucular - Gio based implementation
  • GoVCL - cross-platform GUI package
  • vugu - WebAssembly UI framework
  • GoGi - 2D/3D GUI framework
  • systray - Cross-platform support for menu bar management
  • go-flutter - Bind Flutter to desktop applications
  • NuxUI

Desktop Help Package

Desktop Application

Mobile Phone

Coroutine/Thread

  • ants - goroutine pool
  • tunny
  • go-workers - Safely run a group of workers simultaneously, input and output across channels
  • Machine - Coroutine management inspired by errgroup.Group
  • Thread

Task/Timer

  • RxGo - Go version ReactiveX, simple and convenient processing of asynchronous data streams
  • Grift - Go-based task runner
  • cron - a cron library on the go
  • goCron - A job scheduling package from Golang
  • jobrunner
  • CurlyQ - Library for processing background tasks
  • overtalk/task - task management and execution, supports custom number of iterations
  • PPGo_Job - time management system for tasks
  • gocelery - Celery's Go language implementation
  • [Machines] (https://github.com/RichardKnop/machinery) - Asynchronous task scheduling through distributed messages
  • dkron - Distributed task scheduling system
  • Grit - Task management based on MultiTree implementation
  • Asynq - Asynchronous distributed task queue
  • cronsun - distributed task system

Stream Processing

WeChat

  • weapp - WeChat applet SDK
  • wechat - WeChat SDK for Go
  • wechat-go - Go implementation of WeChat Web API

SDK

  • gopay - Go version SDK for QQ, WeChat, AliPay
  • alipay - Alipay SDK

Blockchain

  • Hyperledger Fabric - Hyperledger based on Blockchain
  • go-ethereum - Official Go implementation of the Ethereum protocol
  • bbgo - Framework for cryptocurrency trading, written in Go
  • btcd - Bitcoin implementation

Development Aid Package

  • cvt - Arbitrary data type conversion, support for custom types, extract structure fields and values
  • copier - Copy values between structures
  • cast - data type conversion
  • diff - structure and value comparison
  • go-extend
  • com - Toolkit
  • php2go - 140+ PHP function packs implemented in Go
  • gommon - Common packages for Go
  • reflect2 - Reflect API with no runtime Reflect.Value cost
  • mapstructure - convert map value to structure
  • naza - base library for Go language
  • automaxprocs - Automatic setting of GOMAXPROCS
  • c2go - Tool to convert C code to Go code
  • rnm - code refactoring help
  • memviz - graphical data structure
  • underscore.go
  • go-testdeep - Very flexible depth comparison package that extends the Go test package
  • go-model - struct operation package
  • concurrent-map - Concurrent secure map
  • goleak - Goroutine leak detection
  • guregu/null - "null" processing package for SQL/JSON that provides alternative types
  • stats - Default numeric stats
  • Chronos - static race detector
  • collection - Replace native slice
  • rf - code refactoring tool
  • bytebufferpool - byte buffer pool
  • bpool - byte buffer pool, supports bytes.Buffers
  • mergo - Merge structure and dictionary data
  • go-funk - General functions implemented based on reflection
  • lo - shared functions based on 1.18+ generics
  • juniper - Realize common container, iterator, data flow and other functionality based on generics
  • mergo - merges structures and dictionaries
  • xstrings - String related functions

Code Generation

  • ChimeraCoder/gojson - Generate structure from JSON
  • db2struct - Generate structure according to table structure
  • smallnest/gen - Generate structure by table structure
  • sqlc - Generate Go code based on SQL statements
  • xo - Automatically generate Go code according to table structure or query statement

System Development

  • LinuxKit - Toolkit for building secure, portable and portable operating systems for containers
  • go-systemd - bind systemd
  • Lima - Linux-on-Mac ("macOS subsystem for Linux", "containerd for Mac")
  • gopher-os - A Linux-compatible 64-bit POSIX-style system
  • gouring - implement system calls without relying on CGO

Not Categorized

  • go-playground - Go Playground better than the official one
  • Robotgo - Cross-platform golang automation system, controls keyboard and mouse bitmap and reads screen, window handle and global event monitor
  • go-homedir
  • i18n - i18n multilingual toolkit
  • go-i18n - multilingual toolkit
  • Paginator - pagination tool
  • gls - Local goroutine storage
  • mcuadros/go-version - Version number comparison
  • go-semver - Semantic versioning
  • semver - Another semantic version
  • hashicorp/go-version
  • Metabolize - Decodes HTML meta tags into a golang structure
  • otp - One-time password utilities
  • [misspelled] (https://github.com/client9/misspell) - Commonly misspelled English words
  • CRDT - Implementation of the final consistency algorithm CRDT (Convergent and Commutative Replicated Data Types).
  • script - Makes writing shell-like scripts in Go easier
  • sysadmin-utils
  • licenseclassifier - identifies the LICENSE type in the file
  • go-license-detector
  • rose - Embed and run Go code in HTML
  • esbuild - JavaScript build packaging tool
  • clipboard - Cross-platform implementation of the clipboard
  • Timeliner - Collect and organize personal data on social networking sites and index them in timelines
  • hc - HomeKit platform development framework
  • adresse - address processing library, supports multiple languages
  • webhook - webhook service that can run shell commands
  • webhookd - webhook service for shell scripts
  • go-cid - CID spec Go language implementation
  • gorush - APP message notification service
  • EventBus - event bus
  • go-winio - provides interface support for Win32 IO operations
  • clipboard - clipboard
  • fq - reads binary data/files in jq syntax

Logo

Tool

Resource Page