Skip to content

Latest commit

 

History

History
474 lines (341 loc) · 26.4 KB

golang.md

File metadata and controls

474 lines (341 loc) · 26.4 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

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

  • 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
  • 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
  • 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

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

  • go-spew - Go-spew implements a deep pretty printer for Go data structures to aid in debugging.

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

JSON

  • gjson - Get JSON values very quickly in Go
  • ffjson: faster JSON for 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.

Serialization

Text

Markdown

WEB

doc

packages

DB

KV

  • goleveldb - LevelDB key/value database in Go.
  • bolt - A low-level key/value database for Go.
  • etcd - A highly-available key value store for shared configuration and service discovery

In-memory

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.

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.

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