Future articles and content will be updated to the Github project, welcome to follow.
Directories (using Ctrl+F)
introductory
A novice
- 50 Common Mistakes made by New Golang Developers
The data type
-
You don’t even know the difference between a nil slice and an empty slice? The BAT interviewer will have to send you home to wait for the announcement.
-
Golang: Does memory copy happen when a string is converted into a byte array?
-
Golang Interview question: Flip the string containing Chinese characters, numbers, and English letters
-
Golang: Is it necessarily more expensive to copy a large slice than a small one?
-
What happens if map is not initialized
-
Map does not initialize length and initialization length difference
-
How big is the map? What if it is large
-
Is the map iterator secure? Can I delete and iterate at the same time?
-
You can’t change a string. Can you change an array? How
-
How do I tell if an array is sorted
-
How does a regular map solve coroutine security without locking
-
Difference between Array and Slice
-
Golang: What happens to json package variables without tags?
-
What are zero slices, empty slices, nil slices
-
Slice Deep copy and shallow copy
-
When does the map trigger capacity expansion? What condition does the map trigger capacity expansion?
-
What is the MAP capacity expansion policy
-
Custom type slice to byte slice and byte slice back to automatically slice by type
-
What’s the difference between make and new
-
What are the meanings of the parameters for slice, map, and Chanel
-
How is thread-safe map implemented
Process control
-
Is yesterday’s colleague from the append element in the for loop still around today?
-
Golang interviewer: What happens if the channel is already closed for select? What if there’s only one case?
The advanced
Package management
- Just learn go Mod!
To optimize the
-
Golang interview question: How to avoid memory escape?
-
Golang interview question: What about memory escape?
-
Shame on everyone. After three years of golang, I still can’t get this memory leak question right
-
Memory fragmentation problem
-
Chan related goroutine leak issue
-
String related goroutine leak problem
-
You are bound to encounter suspected memory leaks caused by memory reclamation strategies
-
Sync. Pool application scenario
-
Go1.13 sync.Pool Compare the optimization points of go1.12
Concurrent programming
-
Golang Interview question: What would it be like to read and write the chan that has been turned off? Why is that?
-
Golang interview question: What about reading and writing uninitialized Chan? Why is that?
-
Advantages, disadvantages and usage scenarios of sync.map
-
Optimization points for sync.map
package
- Commonly used official package instructions
- Description of common third-party packages
- Common framework
- Complete list of standard libraries
- Excellent third party library
-
Audio and Music
-
Data structures: Common data structures and algorithms in Go
-
Distributed Systems: Common data structures and algorithms in Go
-
E-mail: Libraries and tools that enable E-mail creation and delivery
-
Embedded scripting languages: Embed other languages in go code
-
Error handling
-
Libraries that handle files and file systems
-
Finance: Accounting and finance packages
-
Game development: Game development library
-
Geolocation: A library of geolocation information and tools
-
Compiler specific: Go to another language
-
Goroutines: Tools for managing and using Goroutines
-
Graphical interfaces: Libraries for building GUI applications
-
Image: Library for processing images
-
Iot: Iot device programming library
-
JSON format: A library for processing JSON
-
Machine learning: Common machine learning libraries
-
Microsoft Office
-
Natural language processing
-
Network: A library that works with each layer of the network
-
Video: Library for processing video
-
Advanced features
-
Golang: What’s the difference between uintptr and unsafe.Pointer?
-
Golang interview question: How do reflect get field tag? Why can’t json packages export tags for private variables?
-
Coroutines and threads
-
What is the recycling process like?
-
What are write barriers and hybrid write barriers, and how are they implemented?
-
Writer = (*myWriter)(nil).
-
GMP model
-
How is it scheduled between coroutines
-
What about the STW of GC
-
Using golang feature, design a SERVER with QPS of 500
-
Why does GC slow things down
-
What is the difference between opening multiple threads and opening multiple coroutines
-
Interface {} can be compared
-
A case where memory alignment must be done manually
-
Go stack expansion and stack shrinkage, continuous stack disadvantages
-
How does Golang optimize code
-
Golang Hidden Skill: How do I access private members
Troubleshoot problems
- trace
- pprof
The source code to read
- sync.map
- net/http
- mutex
- channel
- context
- Select implementation principle
- The startup process behind the main function
- Memory management
- GC garbage collection
- timer
assembly
- Introduction to assembly
- Recommended books
- Video tutorial
Practical tools
-
Mysql > golang struct
-
Turn json golang struct
-
Turn toml golang struct
-
Yaml turn golang struct
other
Common official bag
-
FMT – Implements formatted input/output operations, of which fmt.printf () and fmt.println () are the most frequently used functions by developers.
-
IO – Implements a number of non-platform-specific IO related interfaces and implementations, such as providing encapsulation of system-specific IO functionality in the OS. We often use this package when we do streaming reads and writes, such as reading and writing files.
-
Bufio – It provides caching capabilities on top of IO. With caching in place, Bufio can easily provide operations like ReadLine.
-
Strconv – Provides the ability to interconvert strings to primitive data types.
-
OS – This package provides non-platform specific access to operating system functions. The interface is unix-style. The functions provided include file operation, process management, signals and user accounts.
-
Sync – This provides basic synchronization primitives. The locking mechanism provided in Sync is used when multiple Goroutines access a shared resource.
-
Flag – provides rule definition of command line arguments and parsing of incoming arguments. Most command-line programs need this package.
-
Encoding /json – JSON is widely used for communication in network programs. This package provides basic support for JSON, such as serializing from an object to a JSON string or deserializing from a JSON string to a concrete object.
-
HTTP – With HTTP packages, you can implement a crawler or a Web server with just a few lines of code, which is unimaginable in traditional languages.
Common third-party packages
-
Database operations – github.com/jinzhu/gorm github.com/go-xorm/xor…
-
Search es – github.com/olivere/ela…
-
Rocketmq operation – github.com/apache/rock…
-
Rabbitmq operation – github.com/streadway/a…
-
Redis operation – github.com/go-redis/re…
-
Etcd operation – github.com/coreos/etcd…
-
Kafka – github.com/Shopify/sar… Github.com/bsm/sarama-…
-
Excel operations – github.com/360EntSecGr…
-
PPT operation – golang.org/x/tools/cmd…
-
Go-svg operation – github.com/ajstarks/sv…
-
Go Bloom filter implementation – github.com/AndreasBrie…
-
Json related – github.com/bitly/go-si…
-
LRU Cache implementation – github.com/bluele/gcac… Github.com/hashicorp/g…
-
Go runtime function replacement – github.com/bouk/monkey…
-
Toml – github.com/toml-lang/t… Github.com/naoina/toml…
-
Yaml – github.com/go-yaml/yam…
-
9 – github.com/spf13/viper…
-
Go Key/Value storage – github.com/etcd-io/bbo…
-
Ringbuffer Based lockless Golang workpool – github.com/Dai0522/wor…
-
Lightweight coroutine pool – github.com/ivpusic/grp…
-
Print detailed data structures for GO – github.com/davecgh/go-…
-
Ringbuffer based queue implementation – github.com/eapache/que…
-
Pinyin – github.com/go-ego/gpy…
-
Participle – github.com/go-ego/gse…
-
Search – github.com/go-ego/riot…
-
Windows COM – github.com/go-ego/ceda…
-
The session – github.com/gorilla/ses…
-
Routing – github.com/gorilla/mux…
-
Websocket – github.com/gorilla/web…
-
The Action handler – github.com/gorilla/han…
-
CSRF – github.com/gorilla/csr…
-
The context – github.com/gorilla/con…
-
Filter HTML tags – github.com/grokify/htm…
-
Configurable HTML tag filtering – github.com/microcosm-c…
-
Obtain location information by IP – github.com/ipipdotnet/…
-
HTML to markdown – github.com/jaytaylor/h…
-
Goroutine local storage – github.com/jtolds/gls…
-
Color output – github.com/mgutz/ansi
-
Form printing – github.com/olekukonko/…
-
Reflect’s more efficient reflection API – github.com/modern-go/r…
-
MSGFMT (formatting string, replacing % with variable name) – github.com/modern-go/m…
-
Cancelable Goroutine – github.com/modern-go/c…
-
Deep copy – github.com/mohae/deepc…
-
Secure type conversion package – github.com/spf13/cast
-
Extract links from text – github.com/mvdan/xurls
-
String formatting (hump conversion) – godoc.org/github.com/…
-
Text diff implementation – github.com/pmezard/go-…
-
Uuid related – github.com/satori/go.u… github.com/snluu/uuid
-
Remove BOM – github.com/ssor/bom from UTF encoding
-
Image zoom – github.com/nfnt/resize
-
Generate mock Server – github.com/otokaze/moc…
-
Go Performance Reported to Influxdb – github.com/rcrowley/go…
-
Go ZooKeeper client – github.com/samuel/go-z…
-
Go thrift – github.com/samuel/go-t…
-
MQTT client – github.com/shirou/mqtt…
-
Hbase – github.com/tsuna/gohba…
-
Go Performance Reported to Influxdb – github.com/rcrowley/go…
-
Go Performance reported to Prometheus – github.com/deathowl/go…
-
Ps utils – github.com/shirou/gops…
-
Decimals – github.com/shopspring/…
-
Structured Log Processing (JSON) – github.com/sirupsen/lo…
-
Command-line framework CLI – github.com/urfave/cli
-
Command line framework cobra-github.com/spf13/cobra
Will the project
-
Gin – github.com/olivere/ela… – Lightweight Web framework on which many companies have made magic changes
-
Beego – github.com/beego/beego – Also a Web framework, more versatile
-
Kratos – github.com/go-kratos/k… – Bilibili open source micro-service framework, B station produced must belong to the fine – product
-
TiDB – github.com/pingcap/tid… – A database you’ll want to choose after you’ve seen mysql performance bottlenecks
Other excellent open source tools category
Audio and Music
-
EasyMIDI – EasyMIDI is a simple and reliable library for handling standard Midi files (SMF).
-
Flac – Native Go FLAC encoder/decoder that supports FLAC streams.
-
Gaad – Native Go AAC bitstream parser.
-
Go-sox – For the LIBSOX binding of GO.
-
Go_mediainfo – The libMediainfo binding for go.
-
Gosamplerate – The libsamplerate binding for GO.
-
Id3v2 – Fast, stable ID3 parsing and authoring library for Go.
-
Malgo – Mini audio library.
-
Minimp3 – Lightweight MP3 decoder library.
-
Mix – Go to local audio mixer based on sequence for music applications.
-
Mp3 – Native Go MP3 decoder.
-
The music theory model in music-theory-Go.
-
Oto – A low-level library for playing sound on multiple platforms.
-
PortAudio – Used to bind the PortAudio audio I/O library.
-
Portmidi – Binds portMIDI.
-
Taglib – Binds to taglib.
-
Vorbis – “native” Go Vorbis decoder (uses CGO, but has no dependencies).
-
Detection-go package, capable of generating waveform images from an audio stream.
The data structure
-
Algorithms – Algorithms and data structures. Research on CLRS.
-
Binpacker – Binary packer and unpacker helps users build custom binary streams.
-
Bit – Golang Settings data structure with additional bit rotation capabilities.
-
Bitset – a Go package that implements the bitset.
-
Bloom – The Bloom filter implemented in Go.
-
Bloom – Golang Bloom filter implementation.
-
Boomfilters – Probabilistic data structures for processing continuous unbounded streams.
-
Concurrent-writer – Replaces bufio.Writer directly with high concurrency.
-
Conjungo – a small, powerful and flexible merge library.
-
Count-min-log – Performs a count-min-log sketch: Performs an approximate count using an approximate counter (similar to a count-min sketch, but using less memory).
-
The Crunch-go package implements buffers for easy processing of various data types.
-
Cuckoofilter – Cuckoo filter: a good alternative to the counting Bloom filter implemented in Go.
-
Deque – Highly optimized two-ended queue.
-
Deque – Fast ring buffer double-endian queue (double-endian queue).
-
Dict-go’s Python-like dictionary (dict).
-
Encoding-go integer compression library.
-
The GO implementation of Go-adaptive radix tree.
-
Go -datastructures – collection of useful, high-performance, and thread-safe datastructures.
-
Go implementation of go-EF-Elias-Fano code.
-
Go-geoindex – Geographic index in memory.
-
Go-mcache – Fast memory key: value store/cache library. Pointer cache.
-
Go-rquad – A regional quadtree with efficient point location and neighbor discovery.
-
Gocache – Complete Go cache library with multiple stores (memory, memcache, Redis, etc.), linkable, loadable, metric cache, etc.
-
Goconcurrentqueue – Concurrent FIFO queues.
-
Gods – Data structures. Containers, collections, lists, stacks, maps, BidiMaps, trees, Hashsets, etc.
-
Gofal-go’s decimal API.
-
Golang-set-go’s thread-safety and non-thread-safety high performance set.
-
Goset-go useful Set Set implementation.
-
Skip list implementation in Goskiplist-go.
-
Gota-go data box, sequence and data collation method implementation.
-
The hide-id type is marshalled into and out of hashes to prevent ids from being sent to clients.
-
The Hilbert-go package is used to map values between space-filling curves such as Hilbert and Peano curves.
-
Hyperloglog – Hyperloglog implementation, with sparse, LogLog-Beta bias correction and TailCut space reduction features.
-
Iter – C ++ STL iterator and algorithm implementation.
-
Levenshtein – Levenshtein distance and similarity metrics, with customizable editing fees and Winkler like bonuses for common prefixes.
-
Levenshtein – An implementation of calculating Levenshtein distance in Go.
-
Mafsa – Ma-FSA implementation with minimum perfect hashes.
-
The realization of Merkletree – Merkle tree can verify the content of data structure effectively and safely.
-
MSPM – Multi-string pattern matching algorithm for information retrieval.
-
Null – can be idled to type and can be marshalled/unmarshalled 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 – An implementation of the prefix tree.
-
Remember -go – Generic 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 package that implements compressed bit set.
-
Set – Simple data structure implementation of go Settings using LinkedHashMap.
-
Skiplist – Very fast Go Skiplist implementation.
-
Skiplist implementation in skiplist-go.
-
Timedmap – map with expired key/value pairs.
-
Treap – Persistent quicksort map using tree heaps.
-
Trie implementation in Trie-Go.
-
Ttlcache – LRU string interface {} mapping in memory, which contains the expiry time of golang.
-
Typ – Empty types, safe primitive conversions and fetching values from complex structures.
-
Willf/Bloom-Go packages implement bloom filters.
Distributed system
- Celeriac – library for adding support in Go to interact with and monitor Celery workers, tasks and events.
- Consistent – a consistent hash with limited load
- 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-go is a fully featured high performance multi-set Raft library.
- Drmaa – Job submission library for cluster schedulers based on drMAA standards.
- Dynamolock – Distributed locking implemented by DynamoDB.
- Dynatomic – Uses DynamoDB as a library for atomic counters.
- Emitters IO – High performance, distributed, secure and low latency publish-subscribe platform built using MQTT, Websockets, and Love.
- Flowgraph – Flow-based programming package.
- Gleam – Fast and scalable distributed map/Reduce system with pure Go and Luajit, with the high performance of Luajit combined with the high concurrency of Go, run alone or distributed.
- Glow – Easy to use scalable distributed big data processing, map-reduce, DAG execution, all in pure Go.
- Go-health-health – Library used to enable asynchronous dependency health checking in the service.
- Go-jump-port for Google’s “jump” consistency hash function.
- Go-kit – A microservice toolkit that supports service discovery, load balancing, pluggable transport, request tracing, and more
- Go-sundheit – Build a library to support defining asynchronous service health checks for Golang services.
- Gorpc – Simple, fast and extensible RPC library for high loads.
- GRPC – GO – GRPC go language implementation. RPC based on HTTP / 2.
- Hprose – A very new RPC library that now supports over 25 languages.
- Jsonrpc – The JSONRPC 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 toolkit 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 – PostgreSQL distributed locking implementation.
- Raft – Golang implementation of HashiCorp’s RAFT Consensus protocol.
- Raft-go implements raft consistency protocol by CoreOS.
- Rain-bittorrent client and library.
- Redis-lock – A simplified distributed locking implementation using Redis.
- Resgate – A real-time API gateway for building REST, real-time, and RPC apis where all clients can seamlessly synchronize.
- Extensible, fault-tolerant application layer sharding for Ringpop-Go-Go applications.
- RPCX – Distributed pluggable RPC service framework, such as Alibaba Dubbo.
- Sleuth – A library (ZeroMQ) for unsolicited P2P automatic discovery and RPC between HTTP services.
- Tendermint – High performance middleware for converting a state machine written in any programming language into a Byzantine fault tolerant copy state machine using tendermint Consensus and blockchain protocol.
- Torrent – BitTorrent client software package.
- Chasquid – SMTP server written in Go.
- Douceur – CSS is lined for your HTML email.
- Email – a powerful and flexible email library for Go.
- Go-dkim-dkim library for signing and verifying E-mail.
- Go-imap – An IMAP library for both clients and servers.
- Go-message – A flow library of Internet message formats and mail messages.
- Go-premailer-inline style for HTML messages in GO.
- Go-simple-mail – very simple package for sending email using SMTP to stay active and two timeouts: Connect and send.
- Hectane – Lightweight SMTP client providing HTTP API.
- Herm-golang software package that generates clean, responsive HTML email.
- Mailchain – Sends encrypted email to a blockchain address written in Go.
- Mailgun-go-go library, used to send mail using the Mailgun API.
- MailHog – Email and SMTP testing via Web and API interfaces.
- SendGrid – The Go library of SendGrid for sending email.
- SMTP – Indicates the protocol state machine of the SMTP server.
Embedded scripting language
-
Anko – scriptable interpreter written in the Go language.
-
Binder – Go to the Lua binding library based on Gopher – Lua.
-
Cel-go – Fast, portable, non-Turing complete expression evaluation with progressive input capabilities.
-
Expr – An engine that can evaluate expressions.
-
Gentee – Embeddable scripting language.
-
Simple LISP in GISP-Go.
-
Go-duktape – Go duktape JavaScript engine binding.
-
Go-lua – Lua 5.2 VM ports to pure Go.
-
PHP binding for go-php-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 – Embeddable ngaro VM implementation that supports scripting in Retro.
-
Otto – a JavaScript interpreter written in Go.
-
Perl 5.18.2 embedded in Purl-go.
-
Tengo – a bytecode compilation scripting language for Go.
Error handling
-
Error handling tools and best practices for the Emperor-Go library and application.
-
Errlog – Breakable software package for responsible source code for determining errors (and some other quick debugging features). You can plug in any off-the-shelf logger.
-
Errors – Drop down to replace standard library error packages and github.com/pkg/errors. Provides various error handling primitives.
-
Errors – A package that provides simple error handling primitives.
-
Errors – Simple Golang error handling with classifiers.
-
Errorx – feature rich error package with stack trace, error composition, etc.
-
Falcon – a simple but powerful error handling software package.
-
Go-multierror-go (Golang) software package for representing a list of errors as a single error.
-
Tracerr – Golang error with stack trace and source code fragment.
-
The Werr – error wrapper creates a wrapper for the error type in Go that captures the file, line, and stack calling it.
file
- Afero-go file system abstraction system.
- Afs-go abstract file storage (MEM, SCP, ZIP, tar, cloud: S3, GS).
- Bigfile – A file transfer system that supports file management using HTTP APIS, RPC calls and FTP clients.
- Checksum – Computes message summaries for large files, such as MD5 and SHA256.
- Flop – File manipulation library designed for parity with GNU CP mirroring features.
- Go-csv-tag-tag – Loads CSV files using tags.
- Go-decent -copy – Copies human files.
- Go – ExifTool – The Go binding for exifTool, which is well known for libraries used to extract data from files (images, PDF, Office…) Extract as much metadata as possible (EXIF, IPTC, etc.).
- Go – GTFS – Loads the GTFS file in GO.
- Notify – file system event notification library with a simple API, similar to OS/Signal.
- Opc – Loads the Open Packaging Conventions (OPC) file for Go.
- Parquet – Reads and writes parquet files.
- Pdfcpu-pdf processor.
- Skywalker – a software package that allows a person to easily traverse the file system simultaneously.
- STL – Module for reading and writing STL (stereo lithography) files. Concurrent read algorithm.
- Tarfs-tar FileSystem interface implementation.
- VFS – A set of pluggable, extensible, and self-righteous file system features for Go across multiple file system types (such as OS, S3, and GCS).
financial
- Accounting-golang currency and currency format.
- Currency – High performance and accurate currency calculation package.
- Decimal – A fixed-point decimal number with arbitrary precision.
- Comprehensive financial market data in go-finance-Go.
- Go-finance – A library of financial functions for time value of money (annuity), cash flow, interest rate conversion, bonds and depreciation calculations.
- Go-finance – module to get exchange rates, check VAT numbers and IBAN bank accounts over VIES.
- Go-money-fowler the realization of the money model.
- Ofxgo – Queries the OFX server and/or parses the response (using the example command line client).
- Orderbook – Match engine limit order in Golang.
- Techan – Technical analysis library with advanced market analysis and trading strategies.
- Transaction – Embedded account running in multi-threaded mode embedded transaction database.
- Vat-vat number verification and EU VAT rate.
The game development
- Azul3D – 3D game engine written in Go language.
- Ebiten-go dead simple 2D game library.
- Engo – Engo is an open source 2D game engine written in Go. It follows the entity component system paradigm.
- G3n-go 3D game engine.
- GarageEngine – A 2D game engine written in Go and available on OpenGL.
- Glop – Glop (Power Game Library) is a fairly simple cross-platform game library.
- Go – ASTar – A go implementation of the path lookup algorithm.
- Go-collada-go package, used for collada file format.
- Go-sdl2 – Simple Go binding of DirectMedia Layer.
- Go3d – Performance oriented 2D/3D math package for Go.
- Gonet – A game server framework implemented using Golang.
- Goworld – Scalable game server engine with spatial entity framework and hot plug capabilities.
- Leaf – Lightweight game server framework.
- Nano – Lightweight, high-performance Golang-based game server architecture.
- Oak-pure Go game engine.
- Pitaya – An extensible game server framework with clustering support and client libraries for iOS, Android, Unity and more via the C SDK.
- A library of hand-crafted 2D games in Pixel-Go.
- Raylib-go – Unbind Raylib, a simple and easy-to-use library to learn about video game programming.
- Termloop-go’s terminal-based game engine, built on top of Termbox.
The geographical position
- Geocache – In-memory caching for location-based applications.
- Geoserver – GeoServer is a Go package for manipulating geoServer instances through the GeoServer REST API.
- Gismanager – Publishes 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 library in S2 Geometry – Go.
- Tile38 – Geo-location database with spatial index and real-time geo-fencing.
- WGS84 – Library coordinate conversion and transformation (ETRS89, OSGB36, NAD83, RGF93, Network Mercator UTM).
The compiler
- C4go – Converts C code to Go code.
- F4go – Converts FORTRAN 77 code to Go code.
- Gopherjs – Go to JavaScript compiler.
- Llgo – LLVM based compiler for Go.
- Tardisgo-golang converts to CPP/CSharp/Java/JavaScript translators.
Goroutines
- 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 – A flexible mechanism to make the execution process interruptible.
- Cyclicbarrier – Cyclicbarrier for Golang.
- Go – FLOc – Easily choreograph Goroutine.
- Go-flow – Controls the execution order of goroutine.
- Go-tools/Multithreading – Use lightweight libraries with simple apis to manage goroutine pools.
- Go-trylock – A trylock that supports read/write locks for Golang.
- 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 that manages the execution of closures and callbacks.
- GoSlaves – Simple and asynchronous Goroutine pool library.
- Goworker – Goworker is a go-based background worker.
- Gowp – GOWp is the concurrent limit goroutine pool.
- Gpool – Manages a resizable context-aware Goroutine pool to bind concurrency.
- Grpool – Lightweight Goroutine pool.
- Hunch – Hunch offers features such as: All, First, Retry, Waterfall and so on, which makes asynchronous flow control more intuitive.
- Oversight – Oversight is a complete implementation of Erlang’s oversight tree.
- Parallel-fn – Parallel running function.
- Pool – Limited consumer Goroutine pool or unlimited Goroutine pool for easier processing and cancellation of Goroutine.
- Queue – Gives you queue group accessibility similar to that of sync.waitGroup. Helps you throttle and limit goroutines, wait for all goroutines to end, and more.
- Routine – Control routines with context and support: Main, Go, Pool and some useful Executors.
- Semaphore – Channel – and context-based semaphore mode implementation with lock/unlock operation timeout.
- 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 threadpool implementation.
- Tunny – Thread pool golang.
- The 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.
The graphical interface
- App – a program packaged to create an application using GO, HTML, and CSS. Support: MacOS, Windows in development.
- Fyne – Cross-platform native GUI for Go, using EFL rendering. Support: Linux, macOS, Windows.
- Go – Astilectron – Build cross-platform GUI applications using GO and HTML/JS/CSS (supported by Electron).
- Go-gtk-gtk binding.
- Go-sciter-go binding: Embeddable HTML/CSS/Script engine for modern desktop UI development. Cross-platform.
- Gotk3 – GTK3 binding.
- Gowd – Quick and easy desktop UI development using GO, HTML, CSS and Nw.js. Cross-platform.
- Qt-go qt binding (Windows/macOS/Linux/Android/iOS/Sailfish OS/Raspberry Pi)
- Ui-go’s platform native GUI library. Cross-platform.
- Wails – Mac, Windows, Linux desktop application with HTML UI using the built-in OS HTML renderer.
- Walk-go’s Windows Application Library toolkit.
- Webview – cross-platform WebView window (Windows/macOS/Linux) with simple bi-directional JavaScript binding.
- Go – Appindicator – libappindicator3 C library go binding.
- Gosx-notifier – Go Specifies the OSX desktop notification library.
- The mac-activity-tracker-OSX library for notifying any (pluggable) activity on your computer.
- OSX sleep/wake notification in mac-sleep-notifier – Golang.
- Robotgo-go native cross-platform GUI system automation. Control mouse, keyboard, etc.
- Systray – A cross-platform Go library for placing ICONS and menus in notification areas.
- Trayhost – A cross-platform Go library for placing an icon in the taskbar of the host operating system.
The picture
- Bild – A collection of image processing algorithms in pure Go.
- Bimg – small packaging for fast and efficient image processing using Libvips.
- Avatar generator for Cameron-Go.
- Canvas – Converts vector graphics to PDF, SVG or raster images.
- Darkroom – Image agent with variable storage back end and image processing engine that focuses on speed and elasticity.
- Geopattern – Creates beautiful generated image patterns from strings.
- Gg – 2D rendering in Pure Go.
- Gift – Packaging for image processing filters.
- GLTF – Efficient, powerful GLTF 2.0 reader, writer and validator.
- Go – Cairo – Used for binding Cairo graphics libraries.
- Go-gd-go binding for the GD library.
- Nude detection of Go-nude-Go.
- Go-opencv – Used for opencV binding.
- Go-webcolors – Port of the Webcolors library, from Python to Go.
- Gocv – Go software package for computer vision using OpenCV 3.3+.
- Goimagehash-go senses imagehash packets.
- Goimghdr – The imGHDR module determines the type of image contained in the Go file.
- Govatar – Library and CMD tool for generating interesting avatars.
- Image2ascii – Converts an 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 – Selects the image processing tool.
- 3D line art rendering in LN-Go.
- Mergi – Tool&Go library for image processing (merge, crop, 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 with Go.
- Pt – Path tracking engine written in Go language.
- Resize – Resizes the image for Go using a common interpolation method.
- Rez – Resizes images in pure Go and SIMD.
- Smartcrop – Find quality crops that fit any image and size.
- Steganography – Pure Go library for LSB steganography.
- Stegify – Go tool for LSB steganography, able to hide any file in an image.
- Svgo – Go language library for SVG generation.
- Tga – Software package TGA is a decoder/encoder for the TARGA image format.
The Internet of things
- Connectordb – Open source platform for quantifying self and the Internet of Things.
- Devices-iot device library suite, for x/EXP/IO experiments.
- Eywa – Project EyWA is essentially a connection manager that keeps track of connected devices.
- Flogo – Project Flogo is an open source framework for IoT Edge applications and integration.
- Gatt-gate is a Go package built with low power Bluetooth peripherals.
- Gobot – Gobot is a framework for robotics, physical computing and the Internet of Things.
- Huego – Philips Hue extension client library for Go.
- Iot – iot is a simple framework for implementing Google iot Core devices.
- Mainflux – Industrial Iot messaging and device management server.
- Periph – Peripherals I/O interface with low-level motherboard devices.
- Sensorbee – Lightweight flow processing engine for the Internet of Things.
JSON format
- Ajson – Abstract JSON for Golang with JSONPath support.
- Gjo – a small utility for creating JSON objects.
- GJSON – Gets the JSON value with a single line of code.
- Go-jsonerror-go-jsonerror makes it easy to create JSON response errors that follow the Json API specification.
- Go-respond-go package, which processes common HTTP JSON responses.
- JSON query in gojq-golang.
- Gojson – Automatically generates 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 – Converts JSON to a Go structure.
- Json2go – Advanced JSON to Go structure conversion. Provides packages that parse multiple JSON documents and create structures that fit all JSON.
- Jsonapi-errors – Binds according to JSON API error references.
- Jsonf – Console tool for highlighting formatting and retrieving JSON structure queries.
- The JsonGo-Fluent API makes it easier to create Json objects.
- Jsonhal – Simple Go package for marshalling custom structures into HAL-compatible JSON responses.
- Kazaam – API for arbitrary conversion of JSON documents.
- Mp – Simple CLI email parser. Currently, it uses standard input and outputs JSON.
Machine learning
- Bayesian classification is called Golang naivete.
- CloudForest – Fast, flexible, multi-threaded decision tree collection for machine learning in pure Go.
- Eaopt – Evolutionary optimization library.
- Evoli – Library for Genetic Algorithms and particle swarm optimization.
- Fonet – Deep neural network library written in Go.
- Go implementation of Go-Cluster-K mode and K-prototype clustering algorithm.
- Go-deep-go rich neural network library
- Go-fann – The Go binding of the fast Artificial neural network (FANN) library.
- Go – Galib – A library of genetic algorithms written by GO/Golang.
- Pattern recognition package in go-pr-Go lang.
- Gobrain – Neural network written in the GO language
- Godist – Various probability distributions and related methods.
- Library of genetic algorithms for Goga-Go.
- GoLearn – A general purpose machine learning library for Go.
- Golinear-go’s Liblinear binding.
- A simple neural network library in Gomind-Go.
- Online machine learning in Goml-Go.
- Goptuna – A Bayesian optimization framework for black box functions written in Go. Everything will be optimized.
- GoRecommend – a library of recommended algorithms written in Go.
- Gorgonia – Graph-based computing libraries, such as Theano for Go, which provide primitives for building various machine learning and neural network algorithms.
- Gorse – An offline recommendation system backend for collaborative filtering written based on Go.
- Goscore – Go Scoring API for PMML.
- Gosseract – OCR (Optical Character Recognition) software package using Tesseract C ++ library.
- Libsvm – golang based on libSVM 3.14 libSVM.
- Neat – A plug-and-play, parallel Go framework for enhancing topological neural evolution (NEAT).
- Neural – go-go – Multi-layer perceptron network implemented in GO, trained by back propagation.
- Ocrserver – a simple OCR API server that is easily deployed 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.
- Regommend – Advice 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 computation diagram in Go, load and execute the Python-trained model.
- Varis-golang neural network.
financial
- Unioffice-pure Go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents.
- The Excelize-Golang library is used for reading and writing Microsoft Excel™ (XLSX) files.
- Go-excel – a simple and lightweight reader that reads Excel like related- DB into tables.
- Goxlsxwriter – Golang binding of libxlsxwriter, used to write XLSX (Microsoft Excel) files.
- XLSX – A library to simplify reading the XML format used in the latest version of Microsoft Excel in Go programs.
- XLSX – A quick/safe way to read/update your existing Microsoft Excel files in the Go program.
Natural language processing
- Getlang – Fast natural language detection package.
- Go – I18N – Software package for handling localized text and an accompanying tool.
- Go – MySTEM – CGo and Yandex.Mystem binding – Russian morphology 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
- The Go-STEM – porter prevents the implementation of the algorithm.
- Go-unidecode – ASCII transliteration of Unicode text.
- Go2vec – Reader and utility features for word2vec embedding.
- Gojieba – This is a Go implementation to solve hegemony in which the Chinese word segmentation algorithm.
- Golibstemmer – Binding of the snowball library libstemmer library, including Porter 2.
- Gotokenizer – A marker for the Bigram language model based on dictionaries and Goram. (Now only support Chinese segmentation)
- Gounidecode-go’s Unicode transliterator (also known as unidecode).
- Gse – Effective text segmentation; Support English, Chinese, Japanese, etc.
- Icu – CGO combines detection and conversion capabilities for the ICU4C C library. Guaranteed compatibility with version 50.1.
- Kagome – JP morphology analyzer written in pure Go language.
- Libtextcat – Cgo binding of libtextCat C library. Guaranteed compatibility with version 2.2.
- MMSEGO – This is the GO implementation of MMSEG, which is the Chinese word segmentation algorithm.
- NLP – Extract values from strings and populate your structure with NLP.
- NLP – A natural language processing library that supports LSA (latent semantic analysis).
- Golang implementation of PaiceHusk – Paice/Husk extraction algorithm.
- Petrovich is a library that uses the Russian name for a given grammatical case.
- Porter – This is a fairly simple port of the C implementation of Martin Porter’s Porter stem algorithm.
- Porter 2 – Very fast Porter 2 extractor.
- Transcended – a library for text processing, supporting tokenization, part of speech tagging, named entity extraction, etc. English only.
- RAKE. Go – Go port for fast automatic Keyword Extraction Algorithm (RAKE).
- Segment – The Go library for performing Unicode text segments as described in Annex # 29 to the Unicode standard
- Sentences – Sentence marker: Converts text to a list of sentences.
- Shamoji – Shamoji is a word filter package written in Go.
- Snowball-go snow bulb port (CGO wrapper). Provides word stem extraction function Snowball machine.
- Stemmer – Stemmer package for the Go programming language. Includes English and German stems.
- Textcat-go software package for N-gram based text classification and supports UTF-8 and raw text.
- Whatlanggo-go’s natural language detection package. Supports 84 languages and 24 scripts (writing systems such as Latin, Cyrillic, etc.).
- When – Natural EN and RU language date/time analyzers have pluggable rules.
network
-
Arp – Packet ARP implements the ARP protocol, as described in RFC 826.
-
Buffstreams – Buffering data via TCP streams protocol is made easier.
-
Canopus-coap client/server implementation (RFC 7252).
-
Cidrange-go fast IP to CIDR lookup.
-
Dhcp6 – The package DHCP6 implements the DHCPv6 server, as described in RFC 3315.
-
DNS – Use the Go library for DNS.
-
Ether – A cross-platform Go package for sending and receiving Ethernet frames.
-
Ethernet – Program package Ethernet implements the encapsulation of IEEE 802.3ETHERNET II frames and IEEE 802.1Q VLAN tags.
-
Fasthttp – software package fasthttp is a fasthttp implementation of Go, 10 times faster than net/HTTP.
-
Fortio – Load test library and command line tools, advanced echo server and Web UI. Allows you to specify a set query load per second and to record and graph delay histograms and other useful statistics. Tcp, Http, gRPC.
-
FTP – Package FTP implements the FTP client as described in RFC 959.
-
Gev – GEV is a lightweight, fast, non-blocking TCP network library based on the Reactor pattern.
-
GMQTT – GMQTT is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1.
-
Gnet – GNET is a high-performance, portable, non-blocking, event loop network library for 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-golang powerDNS API binding.
-
Go implementation of go-stun-STUn client (RFC 3489 and RFC 5389).
-
Gobgp – BGP implemented using the Go programming language.
-
Golibwireshark – Software package GolibWireshark uses the libWireshark library to decode PCAP files and analyze anatomical data.
-
The gopacket-go library for packet processing using the libpcap binding.
-
Gopcap-libpcap wrapper.
-
Goshark – Software package Goshark uses Tshark to decode IP packets and create data structures to analyze packets.
-
Gosnmp – A native Go library for performing SNMP operations.
-
Gosocsvr – Socket server becomes simple.
-
Gotcp – Go software package for quickly writing TCP applications.
-
Grab – Software package for managing file downloads.
-
Graval – Experimental FTP server framework.
-
HTTPLab – HTTPLabs lets you examine HTTP requests and forge responses.
-
Iplib – library inspired by Python ipAddress and Ruby ipaddr to use IP addresses (net.IP, net.ipnet)
-
Jazigo – Jazigo is a tool written in the Go language for retrieving 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 – powerful Websocket framework to make it easier to build IM servers.
-
Linkio – Network link speed simulation for the reader/writer interface.
-
LLB – This is a very simple but fast back end to a proxy server. Fast redirection to predefined domains is useful for zero memory allocation and fast response.
-
Simple MDNS (multicast DNS) client/server library in MDNS-Golang.
-
The mqttPaho – Paho Go client provides an MQTT client library for connecting to an MQTT proxy over TCP, TLS, or WebSockets.
-
Nff-go – a framework for rapid development of high performance networking capabilities for cloud and bare metal machines (formerly YANFF).
-
Packet – Sends packets through TCP and UDP. It can buffer messages and heat exchange connections if needed.
-
Peerdiscovery-pure Go library for cross-platform local peerdiscovery using UDP multicast.
-
Portproxy – a simple TCP proxy that adds apis that do not support it to CORS support.
-
Publicip – The package publicIP returns your public-facing IPv4 address (Internet exit).
-
Quic-go – Implements the QUIC protocol in pure GO.
-
Raw – The raw package allows data to be read and written to the network interface at the device driver level.
-
SFTP – Program package SFTP Implements SSH file transfer protocols, such as filezilla-project.org/specs/draft…
-
SSH – A high-level API for building SSH servers (wrapped crypto/SSH).
-
SSLB – This is a super simple load balancer, just a small project to achieve some performance.
-
Stun – Implements THE RFC 5389 STUN protocol.
-
Tcp_server – Go library for faster construction of TCP servers.
-
The TSpool-TCP library uses working pools to improve performance and protect your server.
-
Implementation of UTP – Go UTP microtransmission protocol.
-
Water – Simple TUN/TAP library.
-
Webrtc – A pure Go implementation of the WebrTC API.
-
Winrm – Enter the Winrm client to execute commands remotely on a Windows computer.
-
XTCP – TCP Server Framework with synchronous full-duplex communication, secure shutdown, and custom protocols.
video
-
Go-astisub – Process subtitles in GO (.srt,.stl,.ttml,.webvtt,.ssa /.ass, Teletext,.smi, etc.).
-
Go – AStits – Locally parses and demultiplexes MPEG transport streams (.ts) in GO.
-
Go – M3U8 – Apple M3U8 playlist parser and generator library.
-
Comprehensive Go binding for GOAV-FFmPEG.
-
Gst-gstreamer binding.
-
Subtitle format support by libgosubs-Go. SRT,.ttml, and.ass are supported.
-
Libvlc-go-libvlc 2.X / 3.X / 4.X binding (used by VLC media player).
-
M3u8 – Apple HLS’s m3U8 playlist parser and generator library.
-
V4l – Linux video capture library written in Go.
Open source books
-
Go PalyGround – Code Go online without setting up a local Go environment
-
Go Hands-on 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 – same author as the previous book on Web development
-
Go language standard library – An introduction to the standard library
-
Go starter guide – suitable for beginners, the content is relatively basic
-
Go Language Bible – Book as its name suggests
-
Go language Chinese – Find the right circle, learn faster
-
Novice Tutorial – this site is great for getting up to speed on a language
-
Go language advanced programming – content suitable for advanced
-
Go language originally – Oushen production, although the alleged progress of only 9.9%/100%, but does not hinder its excellent, worth a look
-
Golang Design Mode – Golang implementation of Design Mode, Golang implementation of Grinding Design Mode
-
Go Language Chapter 42 – Can be compared to fill gaps
Video online classes
External chain problem, go to github project for yourself hahaha.