Go Community Linklog

Made a library? Written a blog post? Found a useful tutorial? Share it with the Go community here or just enjoy what everyone else has found!


goman - the missing man pages for Go binaries

Most Go binaries come without any man page. On the other hand, most Go projects include a README file. So why not substituting that readme file for a man page? The tool goman does exactly this. Starting from the binary, goman figures out where the source code is, and renders the README file to the terminal - even with colors if the README is Markdown-formatted.

Read more
goman on GitHub

goman logo

 Christoph Berger


Basic testing patterns in Go

What should I test? What you need to test in Go is really not much different from any other programming language. Except maybe that you need to take extra care with pointers if you are not coming from that background. Generally I advocate testing on all levels. Which in practice only means that you need to care for testing not only on the top level layers (e.g. your HTTP endpoints), but also ensure that the underlying structures are also well covered.

Read More

 Brian Scott


Multiplexing Golang Channels to Maximize Throughput

The Go language is great for concurrency, but when you have to do work that is naturally serial, must you forgo those benefits? We faced this question while rewriting our database backup utility, mongodump, and utilized a “divide-and-multiplex” method to marry a high-throughput concurrent workload with a serial output.

Read More

 Brian Scott


Pegomock, a mocking framework for Go

https://github.com/petergtz/pegomock

PegoMock is a mocking framework for the Go programming language. It integrates well with Go's built-in testing package, but can be used in other contexts too. It is based on golang/mock, but uses a DSL closely related to Mockito.

 Peter Götz


Lottip - Simple MySQL proxy for query logging with web GUI

Lottip is proxy for MySQL RDBMS with web GUI. It will show you what's happening under the hood of your database layer. As it sits between your application and MySQL server there's no need to use tools like Wireshark or enable general logs to see which queries are being executed. It comes as single binary with zero dependencies and consists of 2 parts: proxy server and embedded GUI. https://github.com/orderbynull/lottip

 Aleksandr Fedotov


lucapette just released v1.0.0 of fakedata package

fakedata - a small Go program for random data generator. Lots of goodies in this release!

 Brian Scott


HyperLogLog: An Improved HyperLogLog Implementation for Go

HyperLogLog with lots of sugar (Sparse, LogLog-Beta bias correction and TailCut space reduction).

An improved version of HyperLogLog for the count-distinct problem, approximating the number of distinct elements in a multiset using 20-50% less space than other usual HyperLogLog implementations.

 Brian Scott


ASPNet Cookie Package

aspnetcookie - A Go package that can decode and validate an ASP.net FormsAuthentication encrypted and signed cookie.

 Brian Scott


Zero Allocation JSON Logger

zerolog - The zerolog package provides a fast and simple logger dedicated to JSON output.

Zerolog's API is designed to provide both a great developer experience and stunning performance. Its unique chaining API allows zerolog to write JSON log events by avoiding allocations and reflection.

 Brian Scott


restic 0.7.0 has been released!

restic 0.7.0 has been released (including new Swift and Backblaze backends): restic 0.7.0

 Brian Scott


Using Goth with Buffalo

In this video we’ll build a Buffalo application that uses Goth to add authorization using GitHub.

This video will demostrate the following:

  • Using Goth with Buffalo
  • Writing Buffalo middleware
  • Authentication/Authorization
  • Manipulating the middleware stack

https://blog.gobuffalo.io/using-goth-with-buffalo-c2b198f540a1

 Mark Bates


HTTPLab - An interactive web server

HTTPLab let you inspect HTTP requests and forge responses.

 Brian Scott


Idiomatic Go

What is idiomatic Go? It's frequently asked, but doesn't have an easy answer. Part of the problem is that we are still figuring it out. This is partly because Go is a young language. As the language and community matures, so will the idioms.

Be aware that idioms are more like guidelines than rules. Working code is more important than idiomatic code. Since idioms are sort of a shared experience, something that is not idiomatic is not necessarily wrong.

Since there isn't a definitive answer, I have collected relevant references.

https://pocketgophers.com/idiomatic-go/

 Nathan Kerr


GolangFlow is Live!

Community Site for posting news, updates, libraries about the Go Programming Language. Just Login using Github and begin posting your updates and other cool packages!. Posts support Markdown.

 Brian Scott