Our great sponsors
-
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.
-
goa
🌟 Goa: Elevate Go API development! 🚀 Streamlined design, automatic code generation, and seamless HTTP/gRPC support. ✨
-
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.
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.
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.
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.
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.
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.
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.
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
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.