Things that annoy you in Go...

This page summarizes the projects mentioned and recommended in the original post on /r/golang

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • go

    The Go programming language

  • I'm disappointed with the fact that the team didn't choose to add a ConstError or StringError type to errors, and that they're stonewalling proposals like this, not even adding them to golang.org/x/exp. But these are library issues that we can solve ourselves.

  • zenity

    Zenity dialogs for Golang, Windows, macOS

  • Const errors are totally doable. https://dave.cheney.net/2016/04/07/constant-errors https://github.com/ncruces/zenity/blob/master/internal/zenutil/env.go

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • gomempool

    A []byte pool for Go.

  • For the case of needing a large amount of transiently-used []byte, you may find my gomempool package useful. It isn't a generic memory pool, it is very specifically for sets of bytes. I had a system many years ago with exactly the problem you mentioned, I was receiving multi-megabyte messages that I really needed to have in a big []byte, but they never lived long, so it was driving the allocator nuts for no good reason because I was receiving a lot per second but there was never more than a handful alive at a time.

  • rosarygen

    Rosary audio file generator

  • I think that my so-far mostly unreleased audio package did this (you can see an early version of it as processor.go in https://github.com/TheGrum/rosarygen/blob/master/processor.go). It, and the similarly structured and also unreleased OpenStreetMaps query replayer I built compose flows, creating goroutines and channels as a matter of course in constructing flows that can run in parallel. It allows my audio stack to create flows that split and rejoin - be that treating left/right channels differently, or splitting into the complex realm with an FFT, or splitting into high-pass and low-pass or finer grained frequency-band streams, or mixing in multiple files. For the OSM query engine, it allows it to process a file, and pass location queries through to Nominatim to get a region, and then fire off a series of requests for that region at different zoom levels, while all those requests are fed to the OSM engine in a separate goroutine, along with more explicit requests coming from lat/lon specified ranges.

  • godevcontainer

    Golang development container for Visual Studio Code Remote Containers Development

  • Installing the Go extension in VScode should prompt you to install what's needed. Otherwise you can use https://github.com/qdm12/godevcontainer ;)

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts