DEV Community

loading...
Cover image for 7 subjects (and GitHub repositories) to become a better Go Developer

7 subjects (and GitHub repositories) to become a better Go Developer

Avelino
Open Source Engineer - 🏊‍♂️🚴‍♂️🏃‍♂️ Amateur Triathlete (IRONMAN distance)
Updated on ・3 min read

With the high adoption of the Go language by developers and large companies, this has led companies to search for engineers with experience in Go.

This can create a lot of pressure of what to study to become a better engineer, this is very personal, it requires planning of what and when to study other subjects (even outside the engineering area).

In this blogpost some topics (with repositories and links) that I think are important to know in order to become an engineer person with even better Go knowledge, follow good practices for writing code, concepts of code structure (usually using design pattern), scalable code and clean code.

Style guide

I can't list only one link (repository) for this topic, I would recommend you to read for these 3 links and bring to your team's day to day life what best fits their reality — remember to use as base the official language documentation and add what makes sense from the other links

Effective Go

GitHub logo uber-go / guide

The Uber Go Style Guide.

This repository holds the Uber Go Style Guide, which documents patterns and conventions used in Go code at Uber.

Style Guide

See Uber Go Style Guide for the style guide.

Translations

We are aware of the following translations of this guide by the Go community.

If you have a translation, feel free to submit a PR adding it to the list.




Google Style Guides

Go standards and style guidelines | GitLab

Best Practices

Francesc Campoy gave an excellent talk at OSCON 2015 on this subject, where he covered best practices for developing software using the Go language.

Slides

Twelve Go Best Practices

Algorithms Implemented

GitHub logo TheAlgorithms / Go

Algorithms Implemented in GoLang

The Algorithms - Go

Gitpod Ready-to-Code  golangci-lint   update_directory_md Discord chat 

Algorithms implemented in Go (for education)

The repository is a collection of open-source implementation of a variety of algorithms implemented in Go and licensed under MIT License.

Read our Contribution Guidelines before you contribute.

List of Algorithms

See our directory.




This repository contains Go based examples of many popular algorithms and data structures.

Each algorithm and data structure has its own separate README with related explanations and links for further reading.

Clean Code

A reference for the Go community that covers the fundamentals of writing clean code and discusses concrete refactoring examples specific to Go.

GitHub logo Pungyeon / clean-go-article

A reference for the Go community that covers the fundamentals of writing clean code and discusses concrete refactoring examples specific to Go.

Clean Go Code

Preface: Why Write Clean Code?

This document is a reference for the Go community that aims to help developers write cleaner code. Whether you're working on a personal project or as part of a larger team, writing clean code is an important skill to have. Establishing good paradigms and consistent, accessible standards for writing clean code can help prevent developers from wasting many meaningless hours on trying to understand their own (or others') work.

We don’t read code, we decode it – Peter Seibel

As developers, we're sometimes tempted to write code in a way that's convenient for the time being without regard for best practices; this makes code reviews and testing more difficult. In a sense, we're encoding—and, in doing so, making it more difficult for others to decode our work. But we want our code to be usable, readable, and maintainable. And that requires…

Clean Architecture

In his book “Clean Architecture: A Craftsman’s Guide to Software Structure and Design” famous author Robert “Uncle Bob” Martin presents an architecture with some important points like testability and independence of frameworks, databases and interfaces.

GitHub logo bxcodec / go-clean-arch

Go (Golang) Clean Architecture based on Reading Uncle Bob's Clean Architecture

go-clean-arch

Changelog

Description

This is an example of implementation of Clean Architecture in Go (Golang) projects.

Rule of Clean Architecture by Uncle Bob

  • Independent of Frameworks. The architecture does not depend on the existence of some library of feature laden software. This allows you to use such frameworks as tools, rather than having to cram your system into their limited constraints.
  • Testable. The business rules can be tested without the…

Elton Minetto has written two excellent blogposts on the subject:

  1. Clean Architecture using Golang
  2. Clean Architecture, 2 years later

Awesome Go

I couldn't leave out the awesome-go project (which I started in 2014 and today many contributors help me maintain)

GitHub logo avelino / awesome-go

A curated list of awesome Go frameworks, libraries and software

awesome-go Awesome Go

Build Status Awesome Slack Widget Netlify Status

awesome-go - Curated list awesome Go frameworks, libraries and software | Product Hunt

Sponsorships

Digital Ocean

We have no monthly cost, but we have employees working hard to maintain the Awesome Go, with money raised we can repay the effort of each person involved! All billing and distribution will be open to the entire community.

A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.

Contributing

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!

Contents

A collection of awesome Go libraries and resources. This repository contains a list of variety of frameworks, template engines, articles and post, documentations, reactive and functional programming and much more which will increase your resourcefulness and might also help you to choose the tech stack for your next projects.

Project Guideline

This is a complicated subject, there is no standard that will work perfectly for what you are developing, I recommend understanding the concept of project architecture (not only Go) and together with your team understand what works for you, even though there are thousands of books to give you knowledge about the subject I recommend putting your hands in the code and allow you to make mistakes, it is the best way to evolve.

Read this content before any other

How to Write Go Code

Now that you have read the previous link I will recommend a controversial repository by its name, it is not "Golang standards project layout", but there is a project structure that can help in the development of a new project - understand what makes sense for you (and your team), what doesn't, just ignore it.

GitHub logo golang-standards / project-layout

Standard Go Project Layout

Standard Go Project Layout

Translations:

Overview

This is a basic layout for Go application projects. It's not an official standard defined by the core Go dev team; however, it 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 directories common to any large enough real world application.

If you are trying to learn Go or if you are building a PoC or a simple project for yourself this project layout is an overkill. Start with something really simple instead (a single main.gofile andgo.mod is more than enough). As your project grows keep in mind that it'll be important to make sure your code is well structured…

Read why I said this project is controversial


Vote Of Thanks

Thank you so much for reading this post and I hope you find these repositories as useful as I do and will help you to become better go developer. Feel Free to give any suggestions and if you like my work you can follow me on Twitter

Discussion (2)

Collapse
darkeye123 profile image
Matej Leško

Great resources!! Thank you a lot :)

Collapse
ama profile image
Adrian Matei

Great resources thanks - I've bookmarked most of them and made them public on Codever - "go"