Skip to content

Latest commit

 

History

History
555 lines (406 loc) · 31.8 KB

golang.md

File metadata and controls

555 lines (406 loc) · 31.8 KB

Golang

Table of Contents

doc

Install packages

Use proxy, or use Gopm.

http_proxy=127.0.0.1:8087 go get **

for socks5 proxy

sudo dnf install privoxy
sudo echo forward-socks5 / 127.0.0.1:1080 . >> /etc/privoxy/config
sudo service privoxy restart
http_proxy=127.0.0.1:8118 go get **

Godoc and vet moved to the go.tools subrepository since go1.2, so

# go get code.google.com/p/go.tools/cmd/...

More official sub-repositories

  • crypto — additional cryptography packages.
  • net — additional networking packages.
  • sys — packages for making system calls.
  • text — packages for working with text.
  • tools — godoc, vet, cover, and other tools.
  • exp — experimental code (handle with care; may change without warning).

install them

https_proxy=https://127.0.0.1:8118 go get -v golang.org/x/tools/cmd/{godoc,goimports,gorename,vet,gomvpkg,cover}

other great tools

go get -v github.com/golang/lint/golint
go get -v github.com/sqs/goreturns

update xcode-go

proxychains go get -u github.com/acroca/go-symbols
proxychains go get -u github.com/davidrjenni/reftools/cmd/fillstruct
proxychains go get -u github.com/haya14busa/goplay/cmd/goplay
proxychains go get -u github.com/mdempsky/gocode
proxychains go get -u github.com/sqs/goreturns
proxychains go get -u github.com/uudashr/gopkgs/v2/cmd/gopkgs
proxychains go get -u github.com/zmb3/gogetdoc
proxychains go get -u golang.org/x/lint/golint
proxychains go get -u golang.org/x/tools/cmd/gorename
proxychains go get -u golang.org/x/tools/gopls
proxychains go get -u github.com/cweill/gotests/...
proxychains go get -u github.com/rogpeppe/godef
proxychains go get -u github.com/ramya-rao-a/go-outline
proxychains go get -u github.com/go-delve/delve/cmd/dlv

Awesome go

Update packages

go get -u github.com/astaxie/beego

Or use gofresh (Keep your Go package dependencies fresh.)

Necessary dev tools

Programming

packages

  • go-promise - A library implement futrue and promise
  • bufferManager.go - bufferManager demonstrates a technique to decrease pressure on GC in Go.

goroutine/chanel

tutorials

packages

Performance

Packages:

Applications:

  • rush -- parallelly execute shell commands. A GNU parallel like tool in Go. It supports Linux/OS X/Windows!

Test

  • testify - A toolkit with common assertions and mocks that plays nicely with the standard library
  • gotests - Generate better Go tests from your source code.

Data Structure

  • go-datastructures - Go-datastructures is a collection of useful, performant, and threadsafe Go datastructures.
  • golang-set - A simple set type for the Go language.
  • set - Set is a basic and simple, hash-based, Set data structure implementation in Go (Golang)
  • set - General, type-safe, non-allocating set-operations for any sort.Interface
  • pmap (ParallelMap) - A lock-free parallel map in go
  • concurrent-map - provides a high-performance solution to this by sharding the map with minimal time spent waiting for locks.
  • lane - A golang queues, stacks and deques implementation library
  • btree - by google
  • btree - tidwall's folk
  • bloom - Go package implementing Bloom filters
  • cfilter - Cuckoo Filter implementation in Go, better than Bloom Filters
  • bitset - Go package implementing bitsets
  • countminsketch - An implementation of Count-Min Sketch in Golang
  • BoomFilters - Probabilistic data structures for processing continuous, unbounded streams. This includes Stable Bloom Filters, Scalable Bloom Filters, Counting Bloom Filters, Inverse Bloom Filters, Cuckoo Filters, several variants of traditional Bloom filters, HyperLogLog, Count-Min Sketch, and MinHash
  • cuckoofilter - Cuckoo Filter: Practically Better Than Bloom
  • goraph - Package goraph implements graph, tree data structures and algorithms.
  • go-radix - Golang implementation of Radix trees, go-immutable-radix
  • sortutil - Utilities supplemental to the Go standard "sort" package
  • golib/sort - Parallel Quicksort.
  • go-minhash - BottomK minwise hashing for streaming set similarity
  • hyperloglog - HyperLogLog and HyperLogLog++ implementation in Go/Golang. http://godoc.org/github.com/clarkduvall/hyperloglog
  • hyperloglog - HyperLogLog with lots of sugar (Sparse, LogLog-Beta bias correction and TailCut space reduction)
  • mafsa - Package mafsa implements Minimal Acyclic Finite State Automata in Go, essentially a high-speed, memory-efficient, Unicode-friendly set of strings. https://godoc.org/github.com/smartystreets/mafsa

Persistent

  • goque - Persistent stacks, queues, and priority queues for Go backed by LevelDB

Code generator

IO

  • xopen - open files for buffered reading and writing in #golang
  • readahead - Asynchronous read-ahead for Go readers
  • pgzip - Go parallel gzip (de)compression
  • compress - Optimized compression packages
  • breader - breader (Buffered File Reader), asynchronous parsing and pre-processing while reading file. Safe cancellation is also supported.

File format

  • xlsx - Google Go (golang) library for reading and writing XLSX files.
  • multicorecsv - A multicore csv reader library in Go. 3X
  • copmress - Collection of compression related Go packages.
  • csvtk - Another cross-platform, efficient, practical and pretty CSV/TSV toolkit in Golang http://bioinf.shenwei.me/csvtk

Algorithm

  • graph - Graph packages for the Go language
  • golearn - Machine Learning for Go
  • gonn -GoNN is an implementation of Neural Network in Go Language, which includes BPNN, RBF, PCN
  • CloudForest - Ensembles of decision trees in go/golang.
  • bayesian - Naive Bayesian Classification for Golang.
  • go-galib - Genetic Algorithms library written in Go / golang
  • algorithms - Algorithms & Data Structures in Go

Marchine Learning

  • gorgonia - Gorgonia is a library that helps facilitate machine learning in Go.

Math

  • geom - 2d geometry for golang
  • gonum
  • pip-go - Point in polygon implemented in Go

Statistics

NLP

Util

log

  • log4go - Logging package similar to log4j for the Go programming language
  • log15 - Simple, powerful logging for Go

Others

  • gouuid - Pure Go UUID implementation
  • basex - Create Youtube-Like IDs With Golang
  • quarnster/util - Various Go utility code
  • daemon - A daemon package for use with Go (golang) services with no dependencies
  • shutdown - Shutdown management library for Go
  • Gox - Simple Go Cross Compilation。更新go版本后,记得gox -build-toolchain
  • goxc - a build tool for Go, with a focus on cross-compiling, packaging and deployment
  • clipboard - clipboard for golang
  • go.pipeline - go.pipeline is a utility library that imitates unix pipeline. It simplifies chaining unix commands (and other stuff) in Go.
  • go-qrcode - ✨ QR Code encoder (Go) http://go-qrcode.appspot.com
  • commonregex - A collection of common regular expressions for Go
  • cwalk - cwalk = Concurrent filepath.Walk replacement (Go)

Date

  • monday - Monday is a minimalistic translator for month and day of week names in time.Date objects
  • Now - Now is a time toolkit for golang

Debug

Release

  • staticfiles - staticfiles compiles a directory of files into an embeddable .go
  • govvv – Versioning for Go binaries

Code generator

  • go-poet - A Go package for generating Go code

CLI

  • cobra - A Commander for modern Go CLI interactions
  • flag2 - A more traditional flag library for the go programming language
  • writ - A flexible command and option parser for Go
  • go-arg - Struct-based argument parsing in Go
  • cli - A small package for building command line apps in Go
  • color - Color package for Go (golang) http://godoc.org/github.com/fatih/color . It has support for Windows too
  • emoji - emoji terminal output for golang
  • go-sh - like python-sh, for easy call shell with golang.
  • uitable - A go library to improve readability in terminal apps using tabular data
  • uiprogress - A go library to render (multi) progress bars in terminal applications.
  • barely - Simple and extensible status bar to pretty display of Go-lang program's progress
  • pb - Console progress bar for Golang
  • viper -Go configuration with fangs
  • goconfig - goconfig is a easy-use comments-support configuration file(.ini) parser for the Go Programming Language
  • go-homedir - Go library for detecting and expanding the user's home directory without cgo.
  • go-prettytable - A library for Golang to build a simple text table with a multibyte, doublewidth character support
  • 教你写一个color日志库,不止有代码还有原理。
  • tablewriter - ASCII table in golang
  • Handling CTRL-C (interrupt signal) in Golang Programs
  • multibar - Display multiple progress bars in Go (golang).
  • spinner - Go (golang) package for providing a terminal spinner/progress indicator with options.
  • go-prompt - Building a powerful interactive prompt in Go, inspired by python-prompt-toolkit.
  • promptui - Interactive prompt for command-line applications
  • beeep - Go cross-platform library for sending desktop notifications and beeps

JSON

  • gjson - Get JSON values very quickly in Go
  • megajson - A JSON parser generator for high performance encoding and decoding in Go.
  • gojson - A simple command-line tool for manipulating JSON for use in developing Go cod
  • jsonpp - A command line JSON pretty printer.

Needing code generation

  • ffjson: faster JSON for Go
  • easyjson - Fast JSON serializer for golang.

Using reflection

xxx

  • jsonparser - Alternative JSON parser for Go that does not require schema (so far fastest)
  • gojay - fastest JSON encoder/decoder with powerful stream API for Golang
  • json-iterator/go - A high-performance 100% compatible drop-in replacement of "encoding/json"
  • fastjson - Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection

Serialization

Text

Markdown

WEB

doc

packages

Cache

DB

KV

  • goleveldb - LevelDB key/value database in Go.
  • bolt - A low-level key/value database for Go.
  • storm - Simple and powerful toolkit for BoltDB
  • etcd - A highly-available key value store for shared configuration and service discovery
  • badger - An embeddable, persistent, simple and fast key-value (KV) store, written natively in Go. Optimize for SSDs

In-memory

  • buntdb - BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support
  • summitdb - In-memory NoSQL database with ACID transactions, Raft consensus, and Redis API
  • go-memdb - Golang in-memory database built on immutable radix trees
  • yakdb - yakdb (yet another key-value database) is a highly-performant in-memory key-value store written in Go. http://vicvijayakumar.com/yakdb-a-nosql-database-in-go.html

doc

  • tiedot - a document database engine that uses JSON as document notation

rich data structure

  • SSDB - A fast NoSQL database for storing big list of data
  • ledisdb - a high performance NoSQL powered by Go
  • tidb - TiDB is a distributed SQL database compatible with MySQL protocol.

graph

  • dgraph - Scalable, Distributed, Low Latency Graph Database

ORM

GUI

Figure and Chart

  • plotinum - A plotting library for the Go programming language.
  • chart - Basic charts in go. This package focuses more on autoscaling, error bars, and logarithmic plots than on beautifull or marketing ready charts.
  • gosplat - Easily generate html/js graphs in go with dygraphs/gochart
  • svgo - Go Language Library for SVG generation. paper, slide
  • gonum/plot, example

Image

  • gift - Go Image Filtering Toolkit
  • bild - A collection of parallel image processing algorithms in pure Go

Graphics

3D

  • ln - 3D line art engine.

PDF

  • signintech/gopdf - A simple library for generating PDF written in Go lang [Chinese supported]
  • gofpdf - A PDF document generator with high level support for text, drawing and images [Chinese not supported]

HPC

  • hpcgo - Helping submit jobs to HPC cluster
  • mpi - mpi-binding for golang
  • circuit
  • go-workers - Sidekiq compatible background workers in golang
  • glow - Glow is an easy-to-use distributed computation system written in Go, similar to Hadoop Map Reduce, Spark, Flink, Samza, etc. Currently just started and not feature rich yet, but should be reliable to run most common cases.

Distributed systems

  • Go kit is a distributed programming toolkit for building microservices in large organizations.
  • gam - Go Actor Model framework - Ultra fast distributed actors for Golang
  • rpcx - rpcx is a distributed RPC service framework based net/rpc like alibaba Dubbo and weibo Motan. Implemented by Go
  • mesh - Mesh is a tool for building distributed applications.
  • Beehive Beehive is a distributed programming framework that comes with built-in transactions, replication, fault-tolerance, runtime instrumentation, and optimized placement.
  • How we use gRPC to build a client/server system in Go

Flow / piple

  • goflow - Flow-based and dataflow programming library for Go programming language

Glue

  • gopy generates a CPython extension module from a go package.

Go projects index

See more on awesome-gogolang opensource projects

misc