Go is a compiled, concurrent, garbage-collected, statically typed language developed at Google. Go was designed to be an excellent tool for writing large software projects.
According to 2020 stackoverflow developer survey, Go was the 3rd most wanted programming language to learn.
So today, I want to share 7 amazing GitHub projects that will help you become a better Go developer. While some repos can help you have a self-learning path for Go, others can be useful for your workflows.🤓
So let's get started. 👊
Currently building SigNoz - an open-source application performance monitoring tool. Backend of SigNoz is built in Go.
Check out our GitHub repo👇
SigNoz / signoz
SigNoz is an open-source observability platform native to OpenTelemetry with logs, traces and metrics in a single application. An open-source alternative to DataDog, NewRelic, etc. 🔥 🖥. 👉 Open source Application Performance Monitoring (APM) & Observability tool
Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc.
Documentation • ReadMe in Chinese • ReadMe in German • ReadMe in Portuguese • Slack Community • Twitter
SigNoz helps developers monitor applications and troubleshoot problems in their deployed applications. With SigNoz, you can:
👉 Visualise Metrics, Traces and Logs in a single pane of glass
👉 You can see metrics like p99 latency, error rates for your services, external API calls and individual end points.
👉 You can find the root cause of the problem by going to the exact traces which are causing the problem and see detailed flamegraphs of individual request traces.
👉 Run aggregates on trace data to get business relevant metrics
👉 Filter and query logs, build dashboards and alerts based on attributes in logs
👉 Record exceptions automatically in Python, Java, Ruby, and Javascript
👉 Easy…
1. Awesome Go
⭐ Github stars: 65.4k
You can call it the encyclopedia of Go programming language. Just bookmark it to come back to whenever you need something in Go. It is a massive curated list of awesome Go frameworks, libraries and software
avelino / awesome-go
A curated list of awesome Go frameworks, libraries and software
Awesome Go
We use the Golang Bridge community Slack for instant communication, follow the form here to join.
Sponsorships:
Special thanks to
Awesome Go has no monthly fee, but we have employees who work hard to keep it running. With money raised, we can repay the effort of each person involved! You can see how we calculate our billing and distribution as it is open to the entire community. Want to be a supporter of the project click here.
A curated list of awesome Go frameworks, libraries, and software. Inspired by awesome-python.
Contributing:
…
2. Standard Go Project Layout
⭐ Github stars: 24.6k
This repo contains a basic layout for Go application projects. Although it's not an official standard defined by the core Go dev team, it is a set of common historical and emerging project layout patterns in the Go ecosystem.
golang-standards / project-layout
Standard Go Project Layout
Standard Go Project Layout
Translations:
- 한국어 문서
- 简体中文
- 正體中文
- 简体中文 - ???
- Français
- 日本語
- Português
- Español
- Română
- Русский
- Türkçe
- Italiano
- Vietnamese
- Українська
- Indonesian
- हिन्दी
Overview
This is a basic layout for Go application projects. Note that it's basic in terms of content because it's focusing only on the general layout and not what you have inside. It's also basic because it's very high level and it doesn't go into great details in terms of how you can structure your project even further. For example, it doesn't try to cover the project structure you'd have with something like Clean Architecture.
This is NOT an official standard defined by the core Go dev team
. This is a set of common historical and emerging project layout patterns in the Go ecosystem. Some of these patterns are more popular than others. It also has a number of small enhancements along with several supporting…
3. Go kit
⭐ Github stars: 20.5k
Go kit is a programming toolkit for building microservices in Go. Go kit solves common problems in distributed systems and application architecture so you can focus on delivering business value.
Go kit
Go kit is a programming toolkit for building microservices (or elegant monoliths) in Go. We solve common problems in distributed systems and application architecture so you can focus on delivering business value.
- Website: gokit.io
- Mailing list: go-kit
- Slack: gophers.slack.com #go-kit (invite)
Sponsors
Click here or Sponsor, above, for more information on sponsorship.
Motivation
Go has emerged as the language of the server, but it remains underrepresented in so-called "modern enterprise" companies like Facebook, Twitter, Netflix, and SoundCloud. Many of these organizations have turned to JVM-based stacks for their business logic, owing in large part to libraries and ecosystems that directly support their microservice architectures.
To reach its next level of success, Go needs more than simple primitives and idioms. It needs a comprehensive toolkit, for coherent distributed programming in the large. Go kit is a set of…
4. Go Design patterns
⭐ Github stars: 15.4k
This repo contains a curated collection of idiomatic design & application patterns for Go language. You can find patterns like: creational patterns, structural patterns, behavioral patterns, concurrency patterns, messaging patterns.
tmrts / go-patterns
Curated list of Go design patterns, recipes and idioms
A curated collection of idiomatic design & application patterns for Go language.
Creational Patterns
Pattern | Description | Status |
---|---|---|
Abstract Factory | Provides an interface for creating families of releated objects | ✘ |
Builder | Builds a complex object using simple objects | ✔ |
Factory Method | Defers instantiation of an object to a specialized function for creating instances | ✔ |
Object Pool | Instantiates and maintains a group of objects instances of the same type | ✔ |
Singleton | Restricts instantiation of a type to one object | ✔ |
Structural Patterns
Pattern | Description | Status |
---|---|---|
Bridge | Decouples an interface from its implementation so that the two can vary independently | ✘ |
Composite | Encapsulates and provides access to a number of different objects | ✘ |
Decorator | Adds behavior to an object, statically or dynamically | ✔ |
Facade | Uses one type as an API to a number of others | ✘ |
Flyweight | Reuses existing instances of objects with similar/identical state to minimize resource usage | ✘ |
Proxy |
5. Learn Go with test-driven development
⭐ Github stars: 14.6k
Go is a good language for learning test-driven development as Go's standard library provides a built-in testing package. This repo has a list of Go fundamentals with examples of test-driven code implementations.
quii / learn-go-with-tests
Learn Go with test-driven development
Learn Go with Tests
Formats
Translations
Support me
I am proud to offer this resource for free, but if you wish to give some appreciation:
Why
- Explore the Go language by writing tests
- Get a grounding with TDD. Go is a good language for learning TDD because it is a simple language to learn and testing is built-in
- Be confident that you'll be able to start writing robust, well-tested systems in Go
- Watch a video, or read about why unit testing and TDD is important
Table of contents
Go fundamentals
- Install Go - Set up environment for productivity.
- Hello, world - Declaring variables, constants, if/else statements, switch, write your first go program and write your first test. Sub-test syntax and closures.
- Integers -…
6. The Ultimate Go Study Guide
⭐ Github stars: 14.3k
The Ultimate Go Study Guide is a collection of notes for students taking the Ultimate Go class. It is compiled of sample programs with line-by-line comments to help students follow the code better. You will find the link to the repo's content in readme.md file.
hoanhan101 / ultimate-go
The Ultimate Go Study Guide
The Ultimate Go Study Guide
🚀 This material has been acquired and actively maintained by Ardan Labs →
🚀 The Ultimate Go Notebook is now available on Amazon →
Stargazers over time
7. 1000+ Hand-crafted Go examples, exercises and quizzes
⭐ Github stars: 9.8k
Inside this repository, you will find thousands of Go examples, exercises and quizzes.
inancgumus / learngo
❤️ 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. 🚀 Learn Go by fixing 1000+ tiny programs.
Get my book!
Go by Example: Programmer's guide to idiomatic and testable code.
👉 https://github.com/inancgumus/gobyexample
This book is what you need once you wrap up the exercises in this repository.
A Huge Number of Go Examples, Exercises and Quizzes
Best way of learning is doing. Inside this repository, you will find thousands of Go examples, exercises and quizzes. I initially created this repository for my Go: Bootcamp Course. Later on, I added a lot of exercises, and I wanted every programmer who is not yet enrolled in the course to learn for free as well. So here it is. Enjoy.
Available in the following languages:
❤️ Help other fellow developers
Sharing is free but caring is priceless. So, now please click here and share this repository on Twitter.
Stay in touch
-
I usually tweet Go tips…
I hope you enjoyed this list. I will be coming up with more such amazing resources soon. So, stay tuned! 🙂
Top comments (10)
Russ Cox himself bewares that the "Standard Go Project Layout" is really not a standard:
this is not a standard Go project layout #117
The README makes clear that this is not official, but even the claim "it is a set of common historical and emerging project layout patterns in the Go ecosystem" is not accurate.
For example, the vast majority of packages in the Go ecosystem do not put the importable packages in a
pkg
subdirectory. More generally what is described here is just very complex, and Go repos tend to be much simpler.It is unfortunate that this is being put forth as "golang-standards" when it really is not. I'm commenting here because I am starting to see people say things like "you are not using the standard Go project layout" and linking to this repo.
I've been using this layout for 3 years but I've reconsidered the question...
Thanks for sharing, Ankit.
Unpopular opinion the "Standard Go Project Layout" is just in my opinion a total mess (with many different folders having different kind of contents, all staying in the same place at the root). It's very surprising for such a chaotic organization to be considered as the de-facto standard.
Thanks! Pretty useful since I'm learning Go and still a newbie.
You're welcome :)
Thanks. I found the 4rth one usefull for me.
You're welcome Sohail :)
Can we consider Uber style guide here I think it is also good, want to if something better is available
u forgot to add this github.com/mrekucci/epi 😅
Thanks!!!