[hematemesis finishing] Super complete golang interview questions collection + golang Learning Guide + golang knowledge map + growth route


[hematemesis finishing] Super complete golang interview questions collection + golang Learning Guide + golang knowledge map + growth route

The brain map is constantly updated. Check the address online
Subsequent articles and contents will be updated toGitHub projectWelcome to pay attention.

Directory (Ctrl + F)

  • other
  1. Common package
Common package explain
fmt FMT. Printf () and FMT. Println () are the most frequently used functions by developers.
io It implements a series of non platform related IO related interfaces and implementations, such as encapsulation of system related IO functions in OS. We usually use this package for streaming reading and writing (such as reading and writing files).
bufio It provides caching based on Io. With the caching function, bufio can easily provide operations such as readLine.
strconv Provides the ability to interoperate strings with basic data types.
os This package provides non platform related access interfaces to operating system functions. The interface is UNIX style. The functions provided include file operation, process management, signal and user account.
sync It provides basic synchronization primitives. When multiple goroutines access shared resources, they need to use the lock mechanism provided in sync.
flag It provides the function of rule definition of command line parameters and parsing of incoming parameters. Most command-line programs need this package.
encoding/json JSON is widely used as a communication format in network programs. This package provides basic support for JSON, such as serializing an object into a JSON string, or deserializing a specific object from a JSON string.
http Through HTTP package, only a few lines of code are needed to implement a crawler or a web server, which is unimaginable in traditional languages.

  1. Common third party packages
package address
Database operation github.com/jinzhu/gorm github.com/go-xorm/xorm
Search es github.com/olivere/elastic
Rocketmq operation github.com/apache/rocketmq-client-go/v2
Rabbitmq operation github.com/streadway/amqp
Redis operation github.com/go-redis/redis
Etcd operation github.com/coreos/etcd/clientv3
kafka github.com/Shopify/sarama github.com/bsm/sarama-cluster
Excel operation github.com/360EntSecGroup-Skylar/excelize
Ppt operation golang.org/x/tools/cmd/present
Go SVG operation github.com/ajstarks/svgo
Implementation of go bloom filter github.com/AndreasBriese/bbloom
JSON related github.com/bitly/go-simplejson
LRU cache implementation https://github.com/bluele/gcache https://github.com/hashicorp/golang-lru
Go runtime function replacement https://github.com/bouk/monkey
toml https://github.com/toml-lang/toml https://github.com/naoina/toml
yaml https://github.com/go-yaml/yaml
viper https://github.com/spf13/viper
Go key / value storage https://github.com/etcd-io/bbolt
Lockless golang workpool based on ringbuffer https://github.com/Dai0522/workpool
Lightweight collaboration pool https://github.com/ivpusic/grpool
Print go’s detailed data structure https://github.com/davecgh/go-spew
Queue based on ringbuffer https://github.com/eapache/queue
Pinyin https://github.com/go-ego/gpy
participle https://github.com/go-ego/gse
search https://github.com/go-ego/riot
windows COM https://github.com/go-ego/cedar
session https://github.com/gorilla/sessions
route https://github.com/gorilla/mux
websocket https://github.com/gorilla/websocket
Action handler https://github.com/gorilla/handlers
csrf https://github.com/gorilla/csrf
context https://github.com/gorilla/context
Filter HTML tags https://github.com/grokify/html-strip-tags-go
Configurable HTML tag filtering https://github.com/microcosm-cc/bluemonday
Obtain geographic location information according to IP https://github.com/ipipdotnet/ipdb-go
HTML to markdown https://github.com/jaytaylor/html2text
Goroutine local storage https://github.com/jtolds/gls
Color output github.com/mgutz/ansi
Form printing github.com/olekukonko/tablewriter
Reflect more efficient reflection API github.com/modern-go/reflect2
Msgfmt (format string, replace% with variable name) github.com/modern-go/msgfmt
Cancellable goroutine github.com/modern-go/concurrent
Deep copy github.com/mohae/deepcopy
Secure type conversion package github.com/spf13/cast
Extract links from text github.com/mvdan/xurls
String format processing (hump conversion) godoc.org/github.com/naoina/go-str…
Text diff implementation github.com/pmezard/go-difflib
UUID related github.com/satori/go.uuid github.com/snluu/uuid
Remove BOM from UTF code github.com/ssor/bom
Picture zoom github.com/nfnt/resize
Generate mock server github.com/otokaze/mock
Go performance report to incluxdb github.com/rcrowley/go-metrics
Go zookeeper client github.com/samuel/go-zookeeper
go thrift github.com/samuel/go-thrift
Mqtt client github.com/shirou/mqttcli
hbase github.com/tsuna/gohbase
Go performance report to incluxdb github.com/rcrowley/go-metrics
Go performance report Prometheus github.com/deathowl/go-metrics-pro…
ps utils github.com/shirou/gopsutil
Decimal processing github.com/shopspring/decimal
Structured log processing (JSON) github.com/sirupsen/logrus
Command line program framework cli github.com/urfave/cli
Command line program framework Cobra github.com/spf13/cobra

  1. Must see items
project address explain
gin github.com/olivere/elastic Lightweight web framework, many companies are based on it magic change
beego github.com/beego/beego It is also a web framework, which is more versatile
kratos github.com/go-kratos/kratos BiliBili’s open-source micro service framework, produced by station B, must be a boutique
TiDB github.com/pingcap/tidb After seeing the performance bottleneck of MySQL, you will want to choose a database

  1. Complete standard library list
package subpackage explain
bufio bytes Provides functions for byte slicing operations
crypto Common encryption constants are collected
errors The function with operation error is implemented
Expvar It provides a standard interface for public variables, such as arithmetic counters in the server
flag Command line tag parsing is implemented
fmt Formatted input and output is realized
hash Provides a hash function interface
html An HTML5 compatible word splitter and parser are implemented
image A basic two-dimensional image library is realized
io Provides a basic interface to I / O primitives
log It is a simple recording package that provides the most basic logging functions
math Some basic constants and mathematical functions are provided
mine Part of the mime specification is implemented
net It provides a portable interface to unix network socket, including TCP / IP, UDP domain name resolution and UNIX domain socket
os A platform independent interface is implemented for operating system functions
path It realizes the operation of the file name path divided by slash
reflect Implements runtime reflection, allowing a program to manipulate objects of any type
regexp A simple regular expression library is implemented
runtime Contains operations that interact with the go runtime system, such as functions that control goroutine
sort Provides a set of underlying functions that sort collections
strconv The conversion between basic data type and string is realized
strings Implements a simple function that operates on strings
sync Provides basic synchronization mechanisms, such as mutex
syscall An interface that contains a low-level operating system primitive
testing Provides support for automated testing of go packages
time It provides the function of measuring and displaying time
unicode Basic functions related to unicode encoding
archive tar Achieve access to tar compressed documents
zip Provides read and write support for zip compressed documents
compress bzip2 Bzip2 decompression is implemented
flate The deflate compressed data format defined in RFC 1951 is implemented
gzip It realizes the reading and writing of gzip compressed file defined in RFC 1951
lzw The compressed data format of Lempel Ziv Welch coding format is realized
zlib It realizes the reading and writing of zlib format compressed data defined in RFC 1950
container heap Provides any type of heap operation that implements the heap. Interface interface interface
lsit A double linked list is implemented
ring The operation of circular linked list is realized
crypto aes AES encryption is implemented (formerly Rijndael)
cipher The standard cipher block mode is implemented, which can be packaged into a low-level block encryption implementation
des Data encryption standard (DES) and triple data encryption algorithm (TDEA) are implemented
dsa The digital signature algorithm defined in FIPS 186-3 is implemented
ecdsa The elliptic curve digital signature algorithm defined in FIPS 186-3 is implemented
elliptic Several standard elliptic curves in prime field are realized
hmac The keyed hash message authentication code (HMAC) is implemented
md5 The MD5 hash algorithm defined in RFC 1321 is implemented
rand An encryption secure pseudo-random number generator is implemented
rc4 RC4 encryption is implemented. See Bruce Schneier’s applied cryptography for its definition
rsa RSA encryption defined in PKCs #1 is implemented
sha1 The SHA1 hash algorithm defined in RFC 3174 is implemented
sha256 The sha224 and sha256 hash algorithms defined in FIPS 180-2 are implemented
sha512 The sha384 and SHA512 hash algorithms defined in FIPS 180-2 are implemented
subtle Some useful encryption functions have been implemented, but they need to be carefully considered in order to apply them correctly
tls The TLS 1.1 protocol defined in RFC 4346 is partially implemented
x509 Parses X.509 encoded key values and certificates
x509/pkix Contains a shared, low-level structure for ASN. 1 parsing and serialization of X.509 certificates, CRLs, and ocsps
database sql A common interface is provided around SQL
sql/driver It defines the interface to be implemented by the database driver, which is the same as the use of SQL package
debug dwarf It provides access to the dwarf debugging information loaded from the executable file. This package is very valuable for implementing the debugger of go language
elf It realizes the access to ELF object file. Elf is a common file format for binary executables and shared libraries. Linux adopts elf format
gosym Access debugging information in go language binaries. It is valuable for visual debugging
macho Realized the rightMach-o object fileVisit
pe It realizes the access to PE (Microsoft Windows Portable Executable) files
encoding ascii85 ASCII 85 data coding is implemented for btoa tools, Adobe’s postscript and PDF document format
asn1 It realizes the ASN. 1 data structure of parsing der code. See ITU-T rec x.690 for its definition
base32 The base32 encoding defined in RFC 4648 is implemented
base64 The base64 encoding defined in RFC 4648 is implemented
binary It realizes the conversion between unsigned integer value and byte string, as well as the reading and writing of fixed size value
csv Read and write comma separated numeric (CSV) files
gob Manage gob streams — binary value exchange between encoder (sender) and decoder (receiver)
hex Hexadecimal encoding and decoding are realized
json The encoding and decoding of JSON objects defined in RFC 4627 are implemented
pem PEM (Privacy enhanced mail) data coding is realized
xml A simple XML 1.0 parser that can understand XML namespace is implemented
go ast Declared the syntax tree type used to display the go package
build Provides tools for building go packages
doc Extract source code documents from a go ast (abstract syntax tree)
parser A go source file parser is implemented
printer The printing of AST (abstract syntax tree) is realized
scanner A go source code text scanner is implemented
token Constants representing lexical markers and basic operation markers (printing and predictions) in go programming language are defined
hash adler32 Adler-32 checksum is implemented
crc32 It realizes 32-bit cyclic redundancy check or CRC-32 checksum
crc64 It realizes 64 bit cyclic redundancy check or crc-64 checksum
fnv The fnv-1 and fnv-1a unencrypted hash functions created by Glenn Fowler, Landon curt Noll and Phong VO are implemented
html template It automatically builds HTML output and prevents code injection
image color A basic color library is implemented
draw Provide some mapping functions
gif A GIF image decoder is implemented
jpeg A JPEG image decoder and encoder are implemented
png A PNG image decoder and encoder are implemented
index suffixarray A high-speed string matching algorithm based on memory index
io ioutil Some practical I / O functions are implemented
log syslog It provides a simple interface to the system log service
math big Multi precision arithmetic operation (large number) is realized
cmplx It provides basic constants and mathematical functions for complex numbers
rand The pseudo-random number generator is implemented
mime multipart The parsing of multiple parts of mime defined in RFC 2046 is realized
net http Provides the implementation of HTTP client and server
mail It realizes the parsing of mail messages
rpc Provides access to an object exportable method from a network or other I / O connection
smtp The simple mail transfer protocol defined in RFC 5321 is implemented
textproto It implements a general text-based request / response protocol in HTTP, NNTP and SMTP
url Parse URL and realize query escape
http/cgi CGI (general Gateway Interface) defined in RFC 3875 is implemented
http/fcgi Fastcgi protocol is implemented
http/httptest Some HTTP test applications are provided
http/httputil Some HTTP application functions are provided, which are complementary to the things in the net / HTTP package, but they are relatively infrequently used
http/pprof Performance test data is provided through its HTTP server runtime, and the format of the data is exactly what pprof visualizer needs
rpc/jsonrpc A json-rpc clientcodec and servercodec are implemented for the RPC package
os exec External commands can be run
user User account check by name and ID
path filepath The file name path is processed in a manner compatible with the file path defined by the target operating system
regexp syntax Parsing regular expressions into syntax trees
runtime debug Contains the function of debugging the program itself when it is running
pprof Write runtime performance test data in the format required by pprof visualizer
sync atomic It provides a low-level atomic memory mechanism for implementing synchronization algorithms
testing iotest It provides a series of types for testing purposes and implements the standard interfaces of reader and writer
quick A practical function for black box test is realized
script Help test code that uses channels
text scanner A scanner and word splitter are provided for UTF-8 text
tabwriter A write filter (tabwriter. Writer) is implemented, which can translate an input tab split column into properly aligned text
template A data-driven template engine for generating HTML like text output formats
template/parse Build parse tree for template
unicode/utf16 The encoding and decoding of utf-16 sequence are realized
unicode/utf8 Functions and constants that support text encoded in UTF-8 are implemented

  1. Other excellent open source tool categories
  • Audio and music
package explain
EasyMIDI Easymidi is a simple and reliable library for working with standard MIDI files (SMF).
flac Native go FLAC encoder / decoder supporting FLAC stream.
gaad Native go AAC bitstream parser.
go-sox Libsox binding for go.
go_mediainfo Libmediainfo binding for go.
gosamplerate Libsamplerate binding for go.
id3v2 Fast and stable ID3 parsing and writing library for go.
malgo Mini audio library.
minimp3 Lightweight MP3 decoder library.
mix Go to the local audio mixer based on the sequence for the music application.
mp3 Native go MP3 decoder.
music-theory Music theory model in go.
Oto A low-level library for playing sound on multiple platforms.
PortAudio Binding for PortAudio Audio I / O library.
portmidi Bind portmidi.
taglib Bind for taglib.
vorbis “Native” go Vorbis decoder (using CGO but no dependencies).
waveform Go package, which can generate waveform images from audio streams.

  • data structure
package explain
algorithms Algorithms and data structures. CLRs study.
binpacker Binary packers and unpackers help users build custom binary streams.
bit Golang setting data structure with additional bit rotation function.
bitset The go package that implements the bit set.
bloom Bloom filter implemented in go.
bloom Golang bloom filter implementation.
boomfilters A probabilistic data structure for processing continuous unbounded flows.
concurrent-writer Replace bufio.writer directly with high concurrency.
conjungo A small, powerful and flexible merge library.
count-min-log Execute count min log sketch: approximate count using approximate counter (similar to count min sketch, but using less memory).
crunch The go package implements buffers for easy handling of various data types.
cuckoofilter Cuckoo filter: it is a good alternative to the counting bloom filter implemented in go.
deque Highly optimized dual ended queue.
deque Fast ring buffer double ended queue (double ended queue).
dict Go’s Python like dictionary (dict).
encoding Go’s integer compression library.
go-adaptive-radix-tree Go implementation of adaptive cardinality tree.
go-datastructures A collection of useful, high-performance and thread safe data structures.
go-ef Go implementation of Elias Fano coding.
go-geoindex Geographic index in memory.
go-mcache Fast memory key: value store / cache library. Pointer cache.
go-rquad A regional quadtree with the functions of effective point location and neighbor discovery.
gocache A complete go cache library with multiple storage (memory, Memcache, redis, etc.), linkable, loadable, index cache, etc.
goconcurrentqueue Concurrent FIFO queues.
gods Data structure. Container, set, list, stack, map, bidimap, tree, HashSet, etc.
gofal Go decimal API.
golang-set Go’s thread safe and non thread safe high performance sets.
goset Go’s useful set set implementation.
goskiplist Skip list implementation in go.
gota Go data frame, sequence and implementation of data sorting method.
hide ID type, which is grouped into in / out hashes to prevent the ID from being sent to the client.
hilbert Go package for mapping values between space fill curves, such as Hilbert and Peano curves.
hyperloglog Hyperloglog implementation, with sparse, loglog beta deviation correction and tailcut space reduction functions.
iter C + + STL iterator and algorithm implementation.
levenshtein Levenshtein Distance and similarity metrics, Winkler like bonuses with customizable editing costs and common prefixes.
levenshtein Implementation of calculating Levenshtein Distance in go.
mafsa Ma-fsa implementation with minimum perfect hash.
merkletree The implementation of Merkle tree can effectively and safely verify the content of data structure.
mspm Multi string pattern matching algorithm for information retrieval.
null Can be null to type, can be grouped / ungrouped to / from JSON.
parsefields A tool for parsing JSON like logs to collect unique fields and events.
pipeline Implementation of pipelines with fan in and fan out.
ptrie Implementation of prefix tree.
remember-go General interface for caching slow database queries (supported by redis, memcached, ristretto or memory).
ring Go implements a high-performance, thread safe bloom filter.
roaring A software package that implements a compressed bit set.
set Use LinkedHashMap to set up a simple data structure.
skiplist Very fast go skiplist implementation.
skiplist Skip list implementation in go.
timedmap Maps with expired key / value pairs.
treap Persistent quick sort map using tree heap.
trie Trie implementation in go.
ttlcache LRU string interface {} mapping in memory, which contains the expiration time of golang.
typ Null type, safe primitive type conversion and getting values from complex structures.
willf/bloom Go package implements bloom filter.

  • distributed system
package explain
celeriac A library for adding support to go to interact with and monitor celery workers, tasks, and events.
consistent Consistent hash with restricted payload
dht BitTorrent kademlia DHT implementation.
digota Grpc e-commerce micro service.
dot Distributed synchronization using operation transformation / OT.
doublejump Improved Google jump consistency hash.
dragonboat High performance multi group raft library with complete functions in go.
drmaa Job submission Library of cluster scheduler based on drmaa standard.
dynamolock Dynamodb supports distributed locking implementation.
dynatomic Use dynamodb as a library for atomic counters.
emitter-io A high-performance, distributed, secure and low latency publish subscribe platform built using mqtt, WebSockets and love.
flowgraph Stream based programming package.
gleam The fast and scalable distributed map / reduce system with pure go and luajit has the high performance of luajit and the high concurrency of go, which can be run or distributed separately.
glow Easy to use, scalable distributed big data processing, map reduce, DAG execution, all in pure go.
go-health Health – a library for enabling asynchronous dependency health checks in a service.
go-jump The port of Google’s “jump” consistency hash function.
go-kit Microservice toolkit supporting service discovery, load balancing, pluggable transmission, request tracking, etc
go-sundheit Establish a library to support the definition of asynchronous service health checks for golang services.
gorpc Simple, fast and scalable RPC library for high load.
grpc-go Go language implementation of grpc. Http / 2 based RPC.
hprose Very novel RPC library, now supports more than 25 languages.
jsonrpc The JSON RPC package helps implement json-rpc 2.0.
jsonrpc Json-rpc 2.0 HTTP client implementation.
KrakenD Ultra high performance API gateway framework with middleware.
liftbridge NATs lightweight, fault-tolerant message flow.
micro Pluggable microservice toolbox and distributed system platform.
NATS Lightweight high-performance messaging system for microservices, IOT and cloud native systems.
outboxer Outboxer is a go library that implements the library pattern.
pglock Distributed locking implementation supported by PostgreSQL.
raft Golang implementation of haft consensus protocol of hashicorp.
raft Go implements a raft consensus protocol by coreos.
rain BitTorrent client and library.
redis-lock Use redis’s simplified distributed locking implementation.
resgate Real time API gateway for building rest, real-time and RPC APIs, where all clients can be synchronized seamlessly.
ringpop-go Scalability of go applications, fault-tolerant application layer fragmentation.
rpcx Distributed pluggable RPC service framework, such as Alibaba Dubbo.
sleuth A library for automatic discovery of unowned P2P and RPC between HTTP services(ZeroMQ)。
tendermint High performance middleware is used to convert a state machine written in any programming language into a Byzantine fault-tolerant replication state machine using tendermint consensus and blockchain protocol.
torrent BitTorrent client package.
package explain
chasquid SMTP server written in go.
douceur CSS lining for your HTML email.
email Powerful and flexible e-mail library for go.
go-dkim Dkim library for signing and verifying e-mail.
go-imap IMAP library for clients and servers.
go-message Stream library for Internet Message formats and mail messages.
go-premailer Inline style for HTML messages in go.
go-simple-mail A very simple package that uses SMTP to stay active and two timeouts to send e-mail: connect and send.
Hectane A lightweight SMTP client that provides HTTP APIs.
hermes Golang package that generates clean, responsive HTML e-mail.
mailchain Send the encrypted email to the blockchain address written in go.
mailgun-go Go library for sending mail using mailgun API.
MailHog E-mail and SMTP testing through web and API interfaces.
SendGrid Sendgrid’s go library for sending e-mail.
smtp SMTP server protocol state machine.
-Embedded scripting language
package explain
anko A scriptable interpreter written in go language.
binder Go to based ongopher-luaLua binding library.
cel-go Fast, portable, non Turing complete expression evaluation with progressive input function.
expr An engine that can evaluate expressions.
gentee Embeddable scripting language.
gisp Simple LISP in go.
go-duktape Go’s duktape JavaScript engine binding.
go-lua Lua 5.2 VM to go only port.
go-php PHP binding for go.
go-python Naive go binding with Cpython c-api.
golua Lua C API binding.
gopher-lua Lua 5.1 VM and compiler written in go.
gval A highly customizable expression language written in go.
ngaro The embedded ngaro VM implementation supports scripting in retro.
otto JavaScript interpreter written in go.
purl Perl 5.18.2 embedded in go.
tengo Bytecode compilation scripting language for go.

  • error handling
package explain
emperror Error handling tools and best practices for go libraries and applications.
errlog Crackable software package, responsible source code for determining errors (and some other quick debugging functions). Any ready-made recorder can be inserted.
errors Replace the drop-down with the error package of the standard library and github.com/pkg/errors. Provides various error handling primitives.
errors A software package that provides simple error handling primitives.
errors Simple golang error handling and taxonomic elements.
errorx With stack trace, error composition, etc.
Falcon A simple but powerful error handling software package.
go-multierror Go (golang) package, which is used to represent the error list as a single error.
tracerr Golang error with stack trace and source code snippet.
werr The error wrapper creates a wrapper for the error type in go that captures the file, line, and stack that calls it.

  • file
package explain
afero Go’s file system abstraction system.
afs Go’s abstract file storage (MEM, SCP, zip, tar, cloud: S3, GS).
bigfile The file transfer system supports the use of HTTP API, RPC call and FTP client to manage files.
checksum Calculate message summaries for large files, such as MD5 and sha256.
flop File operation library, designed to work withGNU cpMirror function parity.
go-csv-tag Tag – loads CSV files using tags.
go-decent-copy Copy the human file.
go-exiftool Exiftool’s go binding, a well-known library, is used to extract as much metadata (EXIF, IPTC, etc.) as possible from files (pictures, PDF, office,…).
go-gtfs Load the Gtfs file in go.
notify File system event notification library with simple API, similar to OS / signal.
opc Load the open Packaging Conventions (OPC) file for go.
parquet Read and writeparquetFile.
pdfcpu Pdf processor.
skywalker A software package that allows one person to easily pass through the file system at the same time.
stl Module for reading and writing STL (stereolithography) files. Concurrent read algorithm.
tarfs Tar fileFileSystem interfaceInterface implementation.
vfs A set of pluggable, scalable, and self righteous file system functions for go across multiple file system types (such as OS, S3, and GCS).
package explain
accounting Currency and currency format of golang.
currency High performance and accurate currency calculation package.
decimal Fixed point decimal number of arbitrary precision.
go-finance Comprehensive financial market data in go.
go-finance The financial function library is used for currency time value (annuity), cash flow, interest rate conversion, bonds and depreciation calculation.
go-finance Get the exchange rate, check the VAT number through vies and check the Iban bank account number.
go-money Implementation of Fowler’s money mode.
ofxgo Query the ofx server and / or parse the response (using the sample command line client).
orderbook The price limit order of the matching engine is in golang.
techan Technical analysis library with advanced market analysis and trading strategy.
transaction An embedded account embedded transaction database that runs in multithreaded mode.
vat VAT number verification and EU VAT rate.
-Game development
package explain
Azul3D 3D game engine written in go language.
Ebiten Go dead in a simple 2D game library.
engo ENGO is an open source 2D game engine written in go language. It follows the entity component system paradigm.
g3n Go 3D game engine.
GarageEngine 2D game engine written in go language can be used on OpenGL.
glop Grip (Power Game Library) is a fairly simple cross platform game library.
go-astar Go implementation of a path finding algorithm.
go-collada Go package for COLLADA file format.
go-sdl2 Simple DirectMedia LayerGo binding for.
go3d Performance oriented 2D / 3D math package for go.
gonet Game server framework implemented by golang.
goworld Scalable game server engine with Spatial Entity Framework and hot plug function.
Leaf Lightweight game server framework.
nano Light weight, device, high-performance game server architecture based on golang.
Oak Pure go game engine.
Pitaya Extensible game server framework, with cluster support and IOS, Android, unity and other client libraries through C SDK.
Pixel Handmade 2D game library in go.
raylib-go To bind raylib, a simple and easy-to-use library to understand video game programming.
termloop Go’s terminal based game engine is built on termbox.
-Geographical location
package explain
geocache In memory caching for location-based applications.
geoserver GeoServer is a go software package used to manipulate GeoServer instances through GeoServer rest API.
gismanager Publish GIS data (vector data) to PostGIS and GeoServer.
osm A library for reading, writing, and using OpenStreetMap data and APIs.
pbf OpenStreetMap PBF golang encoder / decoder.
S2 geometry S2 geometry Library in go.
Tile38 Geographic location database with spatial index and real-time geographic fence.
WGS84 Library coordinate conversion and transformation (etrs89, osgb36, nad83, rgf93, network Mercator UTM).
package explain
c4go Convert C code to go code.
f4go Convert FORTRAN 77 code to go code.
gopherjs Compiler from go to JavaScript.
llgo Go’s llvm based compiler.
tardisgo Golang to CPP / CSharp / Java / JavaScript translator.
– Goroutines
package explain
ants High performance goroutine pool for golang.
artifex Golang uses a simple in memory job queue based on worker dispatch.
async A safe way to perform functions asynchronously, just in case.
breaker Flexible mechanism to make execution process interruptible.
cyclicbarrier Cyclicbarrier for golang.
go-floc Easily choreograph goroutine.
go-flow Control the execution order of goroutine.
go-tools/multithreading Use a lightweight library with a simple API to manage goroutine pools.
go-trylock Trylock that supports golang’s read / write lock.
go-waitgroup Sync. Waitgroup is similar to error handling and concurrency control.
gohive Go’s high-performance and easy-to-use goroutine pool.
gollback Asynchronous simple function utility to manage the execution of closures and callbacks.
GoSlaves Simple and asynchronous goroutine pool libraries.
goworker Goworker is a go based background worker.
gowp Gowp is a concurrency restricted goroutine pool.
gpool Manage a resizable context aware goroutine pool to bind concurrency.
grpool Lightweight goroutine pool.
Hunch Hunch provides functions, such as all, first, Retry, waterfall, etc., which makes asynchronous flow control more intuitive.
oversight Supervision is the complete implementation of Erlang supervision tree.
parallel-fn Parallel operation function.
pool Limited consumer goroutine pool or unlimited goroutine pool for easier handling and cancellation of goroutine.
queue Provides you with queue group accessibility similar to sync. Waitgroup. Help you throttle and limit goroutines, wait for all goroutines to end, and so on.
routine Routine control with context and support: main, go, pool and some useful executors.
semaphore Implementation of semaphore mode with lock / unlock operation timeout based on channel and context.
semaphore CAS based fast resizable semaphore implementation (faster than channel based semaphore Implementation).
stl Software transaction lock based on software transaction memory (STM) concurrency control mechanism.
threadpool Golang thread pool implementation.
tunny Thread pool golang.
worker-pool Goworker is a simple go asynchronous work pool.
workerpool Goroutine pool, which limits the concurrency of task execution rather than the number of queued tasks.
-Graphical interface
package explain
app Package to create applications using go, HTML, and CSS. Support: MacOS, windows is under development.
fyne Cross platform native GUI designed for go, rendered using EFL. Support: Linux, MacOS, windows.
go-astilectron Build cross platform GUI applications using go and HTML / JS / CSS (supported by electron).
go-gtk Binding of GTK.
go-sciter Go binding: an embeddable HTML / CSS / script engine for modern desktop UI development. Cross platform.
gotk3 Binding of gtk3.
gowd Use go, HTML, CSS and nw.js for fast and simple desktop UI development. Cross platform.
qt QT binding of go (supports windows / MacOS / Linux / Android / IOS / sailfish OS / raspberry PI).
ui Go platform local GUI library. Cross platform.
Wails Mac, windows, Linux desktop applications using HTML UI with built-in OS HTML renderer.
walk Go’s windows application library toolkit.
webview Cross platform WebView window (Windows / MacOS / Linux) with simple bidirectional JavaScript binding.
go-appindicator Libappindicator3 the go binding of the C library.
gosx-notifier Go’s OSX desktop notification library.
mac-activity-tracker OSX library to notify any (pluggable) activity on the computer.
mac-sleep-notifier OSX sleep / wake notification in golang.
robotgo Go native cross platform GUI system automation. Control mouse, keyboard, etc.
systray Cross platform go library for placing icons and menus in the notification area.
trayhost The cross platform go library is used to place an icon in the taskbar of the host operating system.
package explain
bild A collection of image processing algorithms in pure go.
bimg Small packaging for fast and effective image processing using libvips.
cameron Go’s Avatar generator.
canvas Convert vector graphics to PDF, SVG, or raster images.
darkroom Image agent with variable storage back end and image processing engine focusing on speed and elasticity.
geopattern Create beautiful generated image patterns from strings.
gg 2d rendering in pure go.
gift Packaging of image processing filters.
gltf Efficient and powerful gltf 2.0 reader, writer and verifier.
go-cairo Binding for Cairo graphics library.
go-gd Go binding of GD library.
go-nude Bare detection of go.
go-opencv Binding for OpenCV.
go-webcolors The port of the webcolors library, from Python to go.
gocv Go software package for computer vision using OpenCV 3.3 +.
goimagehash Go aware image hash packet.
goimghdr The imghdr module determines the type of image contained in the go file.
govatar Libraries and CMD tools for generating interesting avatars.
image2ascii Converts the image to ASCII.
imagick Magickwand C API bound to ImageMagick.
imaginary Fast, simple HTTP microservice for image resizing.
imaging Simple go image processing package.
img Select the image processing tool.
ln 3D line art rendering in go.
mergi Tool & go library for image processing (merge, cut, resize, watermark, animation).
mort Storage and image processing server written in go.
mpo Decoder and conversion tool for MPO 3D photos.
picfit Image resizing server written in go.
pt Path tracking engine written in go language.
resize Use common interpolation methods to resize the image for go.
rez Adjust the size of the image in pure Go and SIMD.
smartcrop Find good crops for any image and size.
steganography Pure go library for LSB steganography.
stegify The go tool for LSB steganography can hide any file in the image.
svgo Go language library for SVG generation.
tga The software package TGA is the decoder / encoder of Targa image format.
-Internet of things
package explain
connectordb Open source platform for quantifying self and Internet of things.
devices IOT device library suite, experiment with X / exp / Io.
eywa Project Eywa is essentially a connection manager that tracks connected devices.
flogo Project flogo is an open source framework for IOT edge applications and integration.
gatt Gate is a go package that builds low-power Bluetooth peripherals.
gobot Gobot is the framework of robotics, physical computing and the Internet of things.
huego Philips hue extended client library for go.
iot IOT is a simple framework for implementing Google IOT core devices.
mainflux Industrial Internet of things message and equipment management server.
periph Peripheral I / O interfaces with low-level motherboard devices.
sensorbee Lightweight stream processing engine for the Internet of things.
-JSON format
package explain
ajson Abstract JSON for golang with jsonpath support.
gjo A small utility for creating JSON objects.
GJSON Use one line of code to get the JSON value.
go-jsonerror Go jsonerror allows us to easily create JSON response errors that follow the jsonapi specification.
go-respond Go package, which is used to handle common HTTP JSON responses.
gojq JSON query in golang.
gojson Automatically generate go (golang) structure definitions from sample JSON.
JayDiff JSON diff utility written in go.
jettison High performance, non reflective JSON encoder for go.
JSON-to-Go Convert JSON to go structure.
json2go High level JSON to go structure conversion. Provide a package that can parse multiple JSON documents and create a structure suitable for all JSON.
jsonapi-errors Bind according to JSON API error reference.
jsonf The console tool that highlights the format and gets the structural query of JSON.
jsongo Fluent API makes it easier to create JSON objects.
jsonhal A simple go package for grouping custom structures into Hal compatible JSON responses.
kazaam API for any transformation of JSON documents.
mp A simple cli email parser. Currently, it uses standard input and outputs JSON.
-Machine learning
package explain
bayesian Bayesian classification is golang naive.
CloudForest Fast, flexible, multi-threaded decision tree set for machine learning in pure go.
eaopt Evolutionary optimization library.
evoli Genetic algorithm and particle swarm optimization library.
fonet The deep neural network library written by go.
go-cluster Go implementation of k-mode and k-prototype clustering algorithm.
go-deep Neural network library with rich functions in go
go-fann Go binding of fast artificial neural network (Fann) library.
go-galib Genetic algorithm library written by go / golang.
go-pr Pattern recognition package in go Lang.
gobrain Neural network written in go language
godist Various probability distributions and related methods.
goga Go’s genetic algorithm library.
GoLearn General machine learning library for go.
golinear Liblinear binding of go.
GoMind Simple neural network library in go.
goml Online machine learning in go.
Goptuna Bayesian optimization framework for black box functions written in go language. Everything will be optimized.
goRecommend Recommended algorithm library written by go.
gorgonia Graphics based computing libraries, such as theano for go, provide primitives for building various machine learning and neural network algorithms.
gorse The back end of offline recommendation system based on collaborative filtering written by go.
goscore Go scoring API for PMML.
gosseract OCR (optical character recognition) software package using Tesseract C + + library.
libsvm Derivative works of golang version based on libsvm 3.14 libsvm.
neat Plug and play, parallel go framework for enhancing topological neural evolution (near).
neural-go Go – a multilayer perceptron network implemented in go, trained by back propagation.
ocrserver A simple OCR API server is very easy to deploy by docker and heroku.
onnx-go Go to the interface of open neural network switching (onnx).
probab Probability distribution function. Bayesian inference. Written in pure go language.
regommend Recommendation and collaborative filtering engine.
shield Bayesian text classifier with flexible marker and go storage back end.
tfgo Easy to use tensorflow binding: simplifies the use of the official tensorflow go binding. Define the calculation diagram in go, load and execute the python trained model.
Varis Golang neural network.
package explain
unioffice Pure go library for creating and processing office word (. Docx), Excel (. Xlsx) and PowerPoint (. Pptx) documents.
excelize The golang library is used to read and write to Microsoft Excel ™ (xlsx) file.
go-excel A simple and portable reader can read excel similar to related DB as a table.
goxlsxwriter The golang binding of libxlsxwriter is used to write xlsx (Microsoft Excel) files.
xlsx A library to simplify reading the XML format used by the latest version of Microsoft Excel in the Go program.
xlsx A way to quickly / safely read / update your existing Microsoft Excel files in the Go program.
-Natural language processing
package explain
getlang Fast natural language detection package.
go-i18n A package for processing localized text and an accompanying tool.
go-mystem Binding of CGO to yandex.mystem – Russian morphological analyzer.
go-nlp Utilities for handling discrete probability distributions and other tools that can be used to perform NLP work.
go-pinyin Cn Hanzi to Hanyu Pinyin converter.
go-stem The implementation of the handler blocking algorithm.
go-unidecode ASCII transliteration of Unicode text.
go2vec Reader and utility functions for word2vec embedding.
gojieba This is a go implementation solution, in which the Chinese word segmentation algorithm.
golibstemmer Binding of snowball library and libstemmer library, including Porter 2.
gotokenizer Tagger of bigram language model based on dictionary and GORAM language. (now only Chinese segmentation is supported)
gounidecode Go’s Unicode Transliterator (also known as Unicode).
gse Effective text segmentation; Support English, Chinese, Japanese, etc.
icu CGO combines detection and conversion functions for icu4c C library. Guaranteed compatibility with version 50.1.
kagome JP morphological analyzer written in pure go language.
libtextcat CGO binding of libtextcat C library. Ensure compatibility with version 2.2.
MMSEGO This is the go implementation of mmseg, which is a Chinese word segmentation algorithm.
nlp Extract the value from the string and fill your structure with NLP.
nlp Natural language processing library supporting LSA (latent semantic analysis).
paicehusk Golang implementation of paice / husk extraction algorithm.
petrovich Petrovich is a library that uses Russian names in a given syntax.
porter This is a fairly simple transplantation of the C implementation of Martin Porter’s Porter dry algorithm.
porter2 Very fast Porter 2 extractor.
prose Library for text processing, supporting tokenization, part of speech tagging, named entity extraction, etc. English only.
RAKE.go Go port of fast automatic keyword extraction algorithm (rake).
segment Go library for executing Unicode text segmentation described in Unicode standard annex 29
sentences Sentence marker: converts text into a list of sentences.
shamoji Shamoji is a word filtering package written in go.
snowball Go’s snowball stem port (CGO wrapper). Provide word stem extraction function snowball native.
stemmer Stemmer package for go programming language. Including English and German stems.
textcat Go software package is used for text classification based on n-gram, and supports UTF-8 and original text.
whatlanggo Go’s natural language detection package. Support 84 languages and 24 scripts (writing system, such as Latin, Cyrillic, etc.).
when Natural en and Ru language date / time analyzers have pluggable rules.
package explain
arp The ARP package implements the ARP protocol, as described in RFC 826.
buffstreams It is easy to stream buffer data through TCP protocol.
canopus COAP client / server implementation (RFC 7252).
cidranger Go’s fast IP to CIDR lookup.
dhcp6 The software package dhcp6 implements the DHCPv6 server, as described in RFC 3315.
dns Go library using DNS.
ether Cross platform go package for sending and receiving Ethernet frames.
ethernet The package Ethernet implements the marshaling of IEEE 802.3 Ethernet II frame and IEEE 802.1Q VLAN tag.
fasthttp The software package fasthttp is a fast HTTP implementation of go, which is 10 times faster than net / HTTP.
fortio Load test library and command line tools, advanced echo server and Web UI. Allows you to specify the set query load per second and record and graph delay histograms and other useful statistics. Tcp,Http,gRPC。
ftp The package FTP implements the FTP client described in RFC 959.
gev GeV is a lightweight, fast and non blocking TCP network library based on reactor mode.
gmqtt Gmqtt is a flexible and high-performance mqtt proxy library, which fully implements mqtt protocol v3.1.1.
gnet Gnet is a high-performance, portable, non blocking, event loop network library with pure go.
gNxI A collection of network management tools using gnmi and gnoi protocols.
go-getter Go library for downloading files or directories from various sources using URLs.
go-powerdns Powerdns API binding for golang.
go-stun Go implementation of stun client (RFC 3489 and RFC 5389).
gobgp BGP implemented using go programming language.
golibwireshark The software package golib Wireshark uses the libwireshark library to decode pcap files and analyze anatomical data.
gopacket Go library for packet processing using Libpcap binding.
gopcap Wrapper for Libpcap.
goshark The software package goshark uses tshark to decode IP packets and create data structures to analyze packets.
gosnmp The native go library used to perform SNMP operations.
gosocsvr The socket server becomes simple.
gotcp Go package for quickly writing TCP applications.
grab Software package used to manage file downloads.
graval Experimental FTP server framework.
HTTPLab HTTP labs lets you examine HTTP requests and forge responses.
iplib A library inspired by Python IPAddress and ruby IPADDR that uses IP addresses (net. IP, net. Ipnet)
jazigo Jazigo is a tool written in go language to retrieve the configuration of multiple network devices.
kcp-go KCP – fast and reliable ARQ protocol.
kcptun Extremely simple and fast UDP tunnel based on KCP protocol.
lhttp The powerful websocket framework makes it easier to build an IM server.
linkio Network link speed simulation for reader / writer interface.
llb This is a very simple but fast backend for proxy servers. It is useful for fast redirection to predefined domains with zero memory allocation and fast response.
mdns Simple mDNS (multicast DNS) client / server Library in golang.
mqttPaho PAHO go client provides an mqtt client library for connecting to mqtt proxy through TCP, TLS or WebSockets.
NFF-Go A framework for rapid development of high-performance network functions for cloud and bare metal (formerly yanff).
packet Send packets through TCP and UDP. It can buffer messages and hot swap connections if needed.
peerdiscovery Pure go library for cross platform local peer discovery using UDP multicast.
portproxy Simple TCP proxy, which adds APIs that do not support it to CORS support.
publicip The package publicip returns your public facing IPv4 address (Internet exit).
quic-go Quic protocol is implemented in pure go.
raw Packet raw allows data to be read and written to network interfaces at the device driver level.
sftp The package SFTP implements the SSH file transfer protocol, such asfilezilla-project.org/specs/draft-…
ssh Advanced API for building ssh server (wrapped crypto / SSH).
sslb This is a super simple load balancer, just a small project to achieve some performance.
stun Implement RFC 5389 stun protocol.
tcp_server Go library for building TCP servers faster.
tspool The TCP library uses work pools to improve performance and protect your servers.
utp Implementation of go UTP micro transmission protocol.
water Simple Tun / tap library.
webrtc Pure go implementation of webrtc API.
winrm Enter the winrm client to execute commands remotely on a Windows computer.
xtcp TCP server framework with synchronous full duplex communication, safe shutdown and custom protocol.

  • video
package explain
go-astisub Process subtitles (. SRT,. STL,. Ttml,. Webvtt,. SSA /. Ass, teletext,. SMI, etc.) in go.
go-astits MPEG transport streams (. TS) are parsed and demultiplexed locally in go.
go-m3u8 Parser and generator library for Apple m3u8 playlists.
goav Ffmpeg integrated go binding.
gst GStreamer binding.
libgosubs Go subtitle format support. . SRT,. Ttml and. Ass are supported.
libvlc-go Binding of libvlc 2. X / 3. X / 4. X (used by VLC media player).
m3u8 Parser and generator library for m3u8 playlist of Apple HLS.
v4l Linux video capture library written in go.

  • Open source books
Book name Reasons for recommendation
Go palyground Write go code online without setting up a local go environment
Go actual development The author is the author of the famous go open source project beego, and his best practices are well worth reading
Go web programming The author of the previous book is the same, talking about web development
Go language standard library Introduction to standard library
Go getting started guide It is more suitable for novices, and the content is relatively basic
Go language Bible The book is what it is called
Go language Chinese network Find the right circle and learn faster
Rookie tutorial This website is very suitable for getting started with a language quickly
Go Language Advanced Programming Content suitable for advanced
Go language original Produced by Ou Shen, although it is claimed that the progress is only 9.9% / 100%, it does not hinder its excellence. It is worth seeing
Golang design pattern The design pattern is realized by golang, and the grinding design pattern is realized by golang
Go language 42 chapters You can compare leak detection to fill vacancies

  • Video Online Course


This work adoptsCC agreement, reprint must indicate the author and the link to this article