This repository contains resources to help learn programming in Go (Golang) π.
I like to learn (a bit) a new programming language each year, not necessarily to use it, just for fun and to see how different programming languages are used to solve similar problems. So do not expect that this repository becomes full of great ideas & solutions (but who knows? ;-)). It is just my scratchpad to play with Go, so please treat it as such.
This repository contains the following sub-directories:
- basics basic examples,
- projects demo project(-s) created using Go,
- starters starter templates for Go projects,
- hyperskill my solutions to Hyperskill projects from the Go Core track.
Based on these (free) courses & articles:
- courses:
- β π Go Tutorial,
- β π₯ Go Programming β Golang Course with Bonus Projects π π,
- β
π₯ Learn Go Programming by Building 11 Projects β Full Course π:
- β π₯ Simple Web Server π,
- β π₯ CRUD API π,
- β π₯ Book Management System π,
- β π₯ SlackBot To Calculate Age π,
- β π₯ SlackBot for File Uploading π,
- β π₯ Email Verifier Tool π,
- β π₯ AWS Lambda π,
- β π₯ CRM (Customer Relationship Management) with Fiber π,
- β π₯ HRMS (Human Resource Management System) with Fiber π,
- β π₯ AWS Complete Serverless Stack π,
- β π₯ AI Bot with Wolfram, Wit.ai π,
- β π₯ Go + GRPC π,
- π₯ Event Driven Programming with GO and Kafka π π π,
- π₯ GO + React Chat App π,
- π₯ Video Calling Project - Golang + Docker + WebRTC π,
- β π₯ GO Discord Bot Project π π,
- π₯ GraphQL + GO + MongoDB π,
- π₯ GO Project - GO + ECHO (Framework) API π,
- π₯ GO JWT Authentication with Gin Gonic π,
- π₯ URL Shortener Go+Redis π,
- π₯ Docker For Golang - How To Containerize A Golang Project,
- π₯ Golang On AWS EC2 - How To Deploy A Golang App On Amazon Web Services (AWS),
- π₯ FULL Introduction To HTMX Using Golang π,
- π₯ Learn By Building: Language Server Protocol π₯ LSP Explained (in 5 Minutes) π,
- π₯ How To Structure Your Go App - Full Course (Hex Arch + Tests),
- documentation:
- β π Effective Go,
- β π Go Blog,
- β π Go Wiki,
- β π Go go-to guide,
- others:
- β π Go Developer Roadmap,
- β π Learning Go in 2024; From Beginner to Senior,
- π₯ GopherConAU 2023:
- β π Surprises and Gotchas When Working With JSON,
- β π How to Sort Strings With Go Alphabetically in Any Language,
- β π₯ Go vs Rust: Which To Learn In 2024? π,
- β π Distroless or scratch for Go apps?,
- β π The Go init Function,
- β π How to Use go:embed in Go,
- β π What are UUIDs, and are they better than regular IDs?,
- β π Introducing sqlc - Compile SQL queries to type-safe Go,
- π₯ Software Architecture and System Design in Go/Golang.
I also used these (paid) courses & books:
- β π Hyperskill: Go Core π,
- π Learning Go, 2nd Edition π,
- π Learn Concurrent Programming with Go π,
- π Test-Driven Development in Go π,
- π₯ Advanced Testing and Debugging in Go,
- π Effective Go Recipes,
- π 100 Go Mistakes and How to Avoid Them π,
- π Functional Programming in Go π,
- π Building Modern CLI Applications in Go π,
- π Network Programming with Go Language: Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang π,
- π Cloud Native Go, 2nd Edition,
- π Hands-On Software Engineering with Golang π,
- π Hands-On Software Architecture with Golang π,
- β π Domain-Driven Design with Golang π,
- π Event-Driven Architecture in Golang π,
- π Microservices with Go π,
- π Mastering API Architecture π,
- π gRPC: Up and Running π,
- π gRPC Microservices in Go π,
- π Go With The Domain π π,
- π Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang π,
- π Go Crazy: A Fun Projects-based Approach to Golang Programming π,
- π Software Development with Go: Cloud-Native Programming using Golang with Linux and Docker π,
- π Hands-On System Programming with Go π,
- π Go for DevOps π,
- π Platform Engineering on Kubernetes π,
- π Bootstrapping Microservices with Docker, Kubernetes, and Terraform π,
- π Kubernetes Programming with Go: Programming Kubernetes Clients and Operators Using Go and the Kubernetes API,
- π Designing Microservices Platforms with NATS,
- π₯ Pluralsight: Go Path:
- β π₯ Go: The Big Picture π π,
- β π₯ Go Fundamentals π π,
- β π₯ Debugging in Go π,
- β π₯ Managing Go Projects π π,
- β π₯ Concurrent Programming in Go π,
- β π₯ Accessing Relational Databases in Go π,
- β π₯ Accessing Non-relational Databases in Go π,
- π₯ Testing in Go π,
- β π₯ Go CLI Playbook π π,
- β π₯ Building Go Web Services and Applications π,
- π₯ Secure Coding in Go π,
- β π₯ Managing Errors in Go π,
- π₯ Profiling Go Applications π.
Some useful tools & other resources:
- documentation:
- Go Documentation,
- Effective Go - a guide to writing clear, idiomatic Go code,
- The Go Programming Language Specification,
- Standard Go Project Layout,
- Go Proverbs - a collection of proverbs that represent the best practices of writing Go code,
- BytesizeGo,
- playground online:
- SDKs:
- repositories:
- IDEs:
- GoLand - a commercial IDE for Go,
- Visual Studio Code - a free IDE for Go with these extensions:
- tools:
- frameworks & libraries:
- awesome-go - a curated list of awesome Go frameworks, libraries and software,
- general:
- gopls - the Go language server,
- Cobra - a library for creating powerful modern CLI applications,
- cobra-cli - a CLI generator for Cobra,
- godotenv - a Go port of the Ruby dotenv library,
- uuid - a Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services,
- faker - a fake data generator for Go,
- GoMoney - a Go implementation of Fowler's Money pattern,
- gjson - a Go package that provides a fast and simple way to get a value from a JSON document,
- goreleaser - a Go project for building and releasing Go binaries,
- testing:
- gomock - a mocking framework for the Go programming language,
- databases:
- database/sql π π,
- pq - a pure Go Postgres driver for Go's
database/sql
package, - GORM π - a fantastic ORM library for Go,
- GORM MySQL Driver π - a MySQL driver for GORM,
- sqlc π - a compiler that generates Go code from SQL,
- goose π - a database migration tool for Go,
- MongoDB Go Driver - the official Go driver for MongoDB,
- network services:
- Gin Web Framework - a web framework written in Go,
- Gorilla Web Toolkit - a web toolkit for the Go programming language,
- gorilla/mux - a powerful URL router and dispatcher for Go,
- chi - a lightweight, idiomatic and composable router for building Go HTTP services,
- cors - a CORS middleware for Go,
- fiber - Express inspired web framework written in Go,
- oapi-codegen - a Go code generator for OpenAPI 3 specifications,
- go-retryablehttp - a Go library to provide simple and flexible retrying for HTTP clients,
- protobuf-go - a Go support for Google's protocol buffers π,
- grpc-go - a Go implementation of gRPC,
- Buf π - a new way to work with Protocol Buffers,
- go-retryablehttp - retryable HTTP client,
- cloud services:
- AWS Lambda for Go - a Go library for the AWS Lambda service,
- AWS SDK for Go - the official AWS SDK for the Go programming language,
- LocalStack π - a fully functional local AWS cloud stack,
- microservices:
- Go Kit - a toolkit for microservices,
- messaging:
- Sarama - a Go library for Apache Kafka,
- Confluent's Golang Client for Apache Kafka - a Go client for Apache Kafka,
- Go RabbitMQ Client Library - a Go client for RabbitMQ,
- NATS - Go Client - a Go client for the NATS messaging system,
- memphis - a highly scalable and effortless data streaming platform,
- gazette - a platform that flexibly mix SQL, batch, and stream processing paradigms,
- payments:
- Go Stripe - a Go client for the Stripe API,
- communication:
- Slack API in Go - a Go library for the Slack API,
- slacker - a Go library for the Slack API,
- AI:
- go-wolfram - a Go client for the Wolfram Alpha API,
- wit-go - a Go client for the wit.ai API,
- others:
- JSON to Go Map,
- JSON to Go Struct,
- podinfo - Go microservice template for Kubernetes.
My IDE setup (used while working on this repository) is described here.