Learning a new language, or how I gained familiarity with Go

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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

    A different approach to Go web frameworks

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

  • sqlc

    Generate type-safe code from SQL

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

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

    general purpose extensions to golang's database/sql

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

  • gqlgen

    go generate based graphql server library

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

  • go-kit

    A standard library for microservices.

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

  • goa

    🌟 Goa: Elevate Go API development! 🚀 Streamlined design, automatic code generation, and seamless HTTP/gRPC support. ✨

  • I wish more people encouraged people new to Go to look at some of the targets you'll arrive at so that people don't come into Go thinking the end result is going to be using the Go version of Laravel, Spring, or Rails.

    Go has some interesting ideas about models/ORM's, OpenAPI, validation, templates, embedded binary files and other things. When types mater, like in Go, code generation is often very important as well which isn't as common in scripting languages.

    https://goa.design/ for grpc/rest servers based on specs

    https://gokit.io/ for microservices

    https://github.com/mustafaakin/gongular for object-based validation

    https://sqlc.dev/ for generated models based on SQL (skip the whole idea of an ORM)

    https://github.com/jmoiron/sqlx for more traditional object population from SQL

    https://pkg.go.dev/errors for an understanding of wrapping errors and nested error causes

    https://gqlgen.com/ for auto-generated revolvers based on GraphQL schemas

    https://pkg.go.dev/io#Reader all the Reader/Writer/Closer's as they are everywhere since Go cares about performance and therefore streaming abilities. No more string passing.

  • fx

    A dependency injection based application framework for Go. (by uber-go)

  • As an old Java head, I found FX [1] to fill a missing DI gap for me. Some can argue that it isn't really needed in go, and I tend to agree, but after using it in a few large projects, I find that it encourages a good separation of concerns that enables things to be easier tested as well as prevents cyclical imports.

    [1] https://github.com/uber-go/fx

  • 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
  • gopl.io

    Example programs from "The Go Programming Language"

  • I've been picking this up for work while reading "The Go Programming Language" (https://www.gopl.io/). I like using a book over picking small projects and repeatedly googling things because the book gives a lot of context. I know _how_ all the pieces fit together and am given credible recommendations on what to use and why. It's a slow way to learn "how to use X data structure", but a great way to know "how X data structure works under the hood and why/when that's important".

    The language itself is neat. Obviously very fast. Ergonomically sort of clunky (as compared to other languages, like TS or Python), but I think that'll smooth over with time. It also makes "hard things" in other languages simple, especially its threading and inter-thread communication.

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