Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Gitart/GO-SIMPLE

These are simple examples for useful daily use in your projects.
https://github.com/Gitart/GO-SIMPLE

List: GO-SIMPLE

awesome awesome-list go golang tutorial

Last synced: 9 days ago
JSON representation

These are simple examples for useful daily use in your projects.

Awesome Lists containing this project

README

        

# 💎 GO SIMPLE SAMPLES
![изображение](https://user-images.githubusercontent.com/3950155/185607076-18fcc1fc-5a6e-4261-8e1f-28df4ce0bc57.png)

![image](https://user-images.githubusercontent.com/3950155/194109961-c0e6e1d2-8666-495d-8a38-efb4cb3c1b31.png)

[![pages-build-deployment](https://github.com/Gitart/GO-SIMPLE/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/Gitart/GO-SIMPLE/actions/workflows/pages/pages-build-deployment)

Samples for go language
Примеры использования языка GO

## 👌 Go Full
https://dasarpemrogramangolang.novalagung.com/5-go-command.html
https://www.golinuxcloud.com/golang-encrypt-decrypt/

## 👍 Other samples
https://www.golangprograms.com
https://golangexample.com
https://www.geeksforgeeks.org/atomic-variable-in-golang
https://www.educba.com/golang-atomic
https://golangdocs.com/atomic-operations-in-golang-atomic-package
https://www.geeksforgeeks.org/variadic-functions-in-go/

## 👍 Golang samples
https://github.com/golang/go/wiki#using-the-go-toolchain

## 📘 Library
https://github.com/golang/go/wiki/Projects
https://libs.garden/go/protocols?page=3
https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/08.4.html

**Task** — это средство запуска/сборки задач, которое должно быть проще и удобнее в использовании, чем, например, GNU Make.
https://github.com/go-task/task
https://taskfile.dev/usage/

**Nosql DB Rose**
https://github.com/flower-corp/rosedb

**Tengo** — это небольшой, динамичный, быстрый и безопасный язык сценариев для Go.
https://github.com/d5/tengo

Обфусцируйте код Go, обернув цепочку инструментов Go. Требуется Go 1.18 или новее.
https://github.com/burrowers/garble

**HTTPLoot** — Go-инструмент для исследования безопасности веб-приложений. Позволяет автоматически сканировать, определять технический стек, заполнять формы, извлекать секреты из страниц ошибок/отладки и JavaScript-кода сайтов.
Инструмент разработан командой RedHunt Labs. Свою результативность он уже доказал, найдя 1 676 634 секретов в результате двух этапов глубокого тестирования.

## 🔄 Description other oportunity
https://checkmarx.gitbooks.io/go-scp/content/output-encoding/cross-site-scripting.html

## 🥇 Samples
https://www.youtube.com/watch?v=53WkeeUVoTY
https://github.com/Rhymond/go-money
https://golang.org/doc/effective_go.html#init
http://www.golangbootcamp.com/book/interfaces
https://nanxiao.gitbooks.io/golang-101-hacks/content/posts/range.html
https://gobyexample.com/timers
http://golangtutorials.blogspot.com/2011/06/channels-in-go.html
http://guzalexander.com/2013/12/06/golang-channels-tutorial.html
https://gobyexample.com/non-blocking-channel-operations
https://medium.com/golangspec/range-over-channels-in-go-3d45dd825d2a
https://www.dotnetperls.com/chan-go
http://openmymind.net/Introduction-To-Go-Channels/
https://mmcgrana.github.io/2012/09/go-by-example-timers-and-tickers.html
http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/
https://nanxiao.gitbooks.io/golang-101-hacks/content/posts/unbuffered-and-buffered-channels.html
https://www.golangprograms.com/go-slice-map-filter.html
https://www.golangprograms.com/go-language/slices-in-golang-programming.html
https://www.golangprograms.com/remove-duplicate-values-from-slice.html
https://www.golangprograms.com/go-language/channels.html
https://learningprogramming.net/golang/gorm/fetch-data-using-many-to-many-relationship-in-gorm/
https://gosamples.dev/string-byte-slice/
https://www.newthinktank.com/2015/02/go-programming-tutorial/
https://riptutorial.com/go/example/13468/logging-to-syslog
https://yourbasic.org/golang/
https://www.geeksforgeeks.org/data-types-in-go/
https://golangbot.com/custom-errors/
https://www.cosmiclearn.com/go/functions.php
https://aahansingh.com/data-structures-with-go-a1894b001940
https://www.techieindoor.com/golang-tutorial/
https://www.geeksforgeeks.org/golang-program-that-uses-func-with-variable-argument-list/
https://riptutorial.com/go/example/27479/how-to-encode-data-and-write-to-file-with-gob-
https://blog.carlmjohnson.net/post/2016-11-27-how-to-use-go-generate/
http://fabien-d.github.io/alertify.js/
https://alertifyjs.com/
http://wisembly.github.io/basil.js/

## 🌏 Frameworks
https://entgo.io/docs/crud/

# 🧑 Blogs
* ## English
* [Go](https://github.com/golang/go)
* [The official Go Blog](https://go.dev/blog) - For in depth posts by the Go team
* [Gopher Academy Blog](http://blog.gopheracademy.com/)
* [Dave Cheney's Blog](http://dave.cheney.net)
* [Dave Cheney's Resources for Go Programmers](http://dave.cheney.net/resources-for-new-go-programmers)
* [spf13's Blog](http://spf13.com/post/)
* [Mat Ryer's Medium Blog](https://medium.com/@matryer)
* [Matt Aimonetti's Blog](http://matt.aimonetti.net/)
* [Marcio.io](http://marcio.io/)
* [Carlos Becker's Blog](http://carlosbecker.com/)
* [Ardan Labs](https://www.ardanlabs.com/blog/)
* [The Golang Weekly](http://golangweekly.com/)
* [Alex Edward's Go Posts](http://www.alexedwards.net/blog/category/golang)
* [GoLang Tutorials](http://golangtutorials.blogspot.com/)
* [Mathias Lafeldt's Blog](https://mlafeldt.github.io/)
* [Marcelo Magallon's Blog](http://blog.ksub.org/bytes/)
* [Mina Andrawos's Go Posts](http://www.minaandrawos.com/category/golang-2/)
* [Aliaksandr Pliutau's Blog](http://pliutau.com/)
* [Johan Brandhorst's Blog](https://jbrandhorst.com)
* [Christoph Berger's Applied Go Blog](https://appliedgo.net)
* [Jon Calhoun's Blog](https://www.calhoun.io/)
* [Inanc Gumus's Learn Go Programming Blog](https://blog.learngoprogramming.com)
* [Elliot Forbes - TutorialEdge.net Go Tutorials](https://tutorialedge.net/course/golang/)
* [Timo Savola's Go Posts](http://savo.la/go)
* [Packt Hub](https://hub.packtpub.com/)
* [GoCenter Community Blog](https://jfrog.com/resource-center/?src=gocenter) - Blogs from GoCenter.io about Go modules and community.
* [Basic](https://yourbasic.org/golang/append-explained/)

# 💡 Go - Awesome Tutorial
* [Go pattern](https://github.com/tmrts/go-patterns)
* [Go wit test](https://github.com/quii/learn-go-with-tests)
* [Go Traning](https://github.com/ardanlabs/gotraining)
* [A Huge Number of Go Examples, Exercises and Quizzes](https://github.com/inancgumus/learngo)
* [Learn Go & Quez](https://github.com/inancgumus/learngo)
* [Epi](https://github.com/mrekucci/epi)
* [Project layout](https://github.com/golang-standards/project-layout)
* [Go Awesome](https://github.com/avelino/awesome-go)
* [Socket loop](https://socketloop.com/tutorials/read-parse-xml-file-go)
* [50 Shades of Go](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html)
* [A Tour of Go](https://tour.golang.org/welcome/1)
* [Go Bootcamp](http://www.golangbootcamp.com/book)
* [Go by Example](https://gobyexample.com/)
* [Go Programming Language: An Introductory Golang Tutorial](https://www.toptal.com/go/go-programming-a-step-by-step-introductory-tutorial)
* [Go Resources](http://www.golang-book.com/)
* [Go Tutorial](https://www.tutorialspoint.com/go/)
* [Go Web Examples](https://gowebexamples.com/)
* [Golang Basic](http://www.golangprograms.com/advance-programs.html)
* [Golang Code](https://golangcode.com/)
* [Golang tutorial for beginners](https://golangbot.com/)
* [Golang Tutorials](http://golangtutorials.blogspot.com/2011/05/table-of-contents.html)
* [Gophercises](https://gophercises.com/)
* [Learning Go](https://miek.nl/go/)
* [Learning Go tutorial](https://blog.learngoprogramming.com/)
* [Master Go](https://appliedgo.com/p/mastergo/)

# Go - 💡 Awesome Tutorial Part 2

* [50 Shades of Go](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html)
* [A Tour of Go](https://tour.golang.org/welcome/1)
* [Go Bootcamp](http://www.golangbootcamp.com/book)
* [Go by Example](https://gobyexample.com/)
* [Go Programming Language: An Introductory Golang Tutorial](https://www.toptal.com/go/go-programming-a-step-by-step-introductory-tutorial)
* [Go Resources](http://www.golang-book.com/)
* [Go Tutorial](https://www.tutorialspoint.com/go/)
* [Go Web Examples](https://gowebexamples.com/)
* [Golang Basic](http://www.golangprograms.com/advance-programs.html)
* [Golang Code](https://golangcode.com/)
* [Golang tutorial for beginners](https://golangbot.com/)
* [Golang Tutorials](http://golangtutorials.blogspot.com/2011/05/table-of-contents.html)
* [Gophercises](https://gophercises.com/)
* [Learning Go](https://miek.nl/go/)
* [Learning Go tutorial](https://blog.learngoprogramming.com/)
* [Master Go](https://appliedgo.com/p/mastergo/)

## 🏖️ Req Expr
https://yourbasic.org/golang/regexp-cheat-sheet/
[Limit exec program](https://golangify.com/code-timeout)

## 🍬 Samples for learning
* [https://gobyexample.com/channels](https://gobyexample.com/channels)
* [https://tour.golang.org/concurrency/2](https://tour.golang.org/concurrency/2)
* [http://guzalexander.com/2013/12/06/golang-channels-tutorial.html](http://guzalexander.com/2013/12/06/golang-channels-tutorial.html)
* [https://www.golang-book.com/books/intro/10](https://www.golang-book.com/books/intro/10)
* [https://www.goinggo.net/2014/02/the-nature-of-channels-in-go.html](https://www.goinggo.net/2014/02/the-nature-of-channels-in-go.html)
* [Goroutines vs Green threads (Сравнение гоурутин и «зеленых» потоков)](https://softwareengineering.stackexchange.com/questions/222642/are-go-langs-goroutine-pools-just-green-threads)

## 🧮 Other samples
https://golangify.com/today-date
https://yourbasic.org/golang/days-between-dates/
https://play.golang.org/p/63p-T9uFcZo

## ⏰ Days between two date
https://golang-blog.blogspot.com/2020/04/number-of-days-between-dates-in-golang.html
https://golangify.com/today-date
https://golangify.com/difference-dates-sub-since-until
https://www.geeksforgeeks.org/how-to-compare-times-in-golang/

## 🐱‍🏍 Work with date
https://www.programmersought.com/article/5604990010/
https://yourbasic.org/golang/days-between-dates/
https://www.socketloop.com/tutorials/golang-how-to-check-if-a-date-is-within-certain-range
https://www.tutorialspoint.com/barefoot_skiing/barefoot_skiing_starting_the_race.htm
https://yourbasic.org/golang/create-error/

## 📆 Parsing Date
https://tutorialedge.net/golang/snippets/parsing-date-strings-in-go/

## 🐱‍💻 Templates
https://gowebexamples.com/templates/

## 🎶 Paterns
https://refactoring.guru/ru/design-patterns/go
https://golangbyexample.com/add-or-subtract-to-time-go/

## 🏈 Push server
https://github.com/sharewind/push-server/tree/v3/broker

## 💖 Sample
https://play.golang.org/p/M972dltae2
https://play.golang.org/p/7M14RbGvU8
https://play.golang.org/p/vLIKNdSrpU
https://play.golang.org/p/1GVI37tisG

##🥽 Monitoring
https://github.com/wgliang/goappmonitor

## 🍬 Go routine
https://go.dev/play/p/MSmQSaT02Fc

## 🥟 Sublime setting
https://www.alexedwards.net/blog/streamline-your-sublime-text-and-go-workflow

## 😎 Tutorial Series: How To Code in Go
Go (or GoLang) is a modern programming language originally developed by Google that uses high-level syntax similar to scripting languages. It is popular for its minimal syntax and innovative handling of concurrency, as well as for the tools it provides for building native binaries on foreign platforms.

## 🥧 Browse Series: 52 articles
* [1/52 How To Code in Go eBook](https://www.digitalocean.com/community/books/how-to-code-in-go-ebook)
* [2/52 How To Install Go and Set Up a Local Programming Environment on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-install-go-and-set-up-a-local-programming-environment-on-ubuntu-18-04)
* [3/52 How To Install Go and Set Up a Local Programming Environment on macOS](https://www.digitalocean.com/community/tutorials/how-to-install-go-and-set-up-a-local-programming-environment-on-macos)
* [4/52 How To Install Go and Set Up a Local Programming Environment on Windows 10](https://www.digitalocean.com/community/tutorials/how-to-install-go-and-set-up-a-local-programming-environment-on-windows-10)
* [5/52 How To Write Your First Program in Go](https://www.digitalocean.com/community/tutorials/how-to-write-your-first-program-in-go)
* [6/52 Understanding the GOPATH](https://www.digitalocean.com/community/tutorials/understanding-the-gopath)
* [7/52 How To Write Comments in Go](https://www.digitalocean.com/community/tutorials/how-to-write-comments-in-go)
* [8/52 Understanding Data Types in Go](https://www.digitalocean.com/community/tutorials/understanding-data-types-in-go)
* [9/52 An Introduction to Working with Strings in Go](https://www.digitalocean.com/community/tutorials/an-introduction-to-working-with-strings-in-go)
* [10/52 How To Format Strings in Go](https://www.digitalocean.com/community/tutorials/how-to-format-strings-in-go)
* [11/52 An Introduction to the Strings Package in Go](https://www.digitalocean.com/community/tutorials/an-introduction-to-the-strings-package-in-go)
* [12/52 How To Use Variables and Constants in Go](https://www.digitalocean.com/community/tutorials/how-to-use-variables-and-constants-in-go)
* [13/52 How To Convert Data Types in Go](https://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-go)
* [14/52 How To Do Math in Go with Operators](https://www.digitalocean.com/community/tutorials/how-to-do-math-in-go-with-operators)
* [15/52 Understanding Boolean Logic in Go](https://www.digitalocean.com/community/tutorials/understanding-boolean-logic-in-go)
* [16/52 Understanding Maps in Go](https://www.digitalocean.com/community/tutorials/understanding-maps-in-go)
* [17/52 Understanding Arrays and Slices in Go](https://www.digitalocean.com/community/tutorials/understanding-arrays-and-slices-in-go)
* [18/52 Handling Errors in Go](https://www.digitalocean.com/community/tutorials/handling-errors-in-go)
* [19/52 Creating Custom Errors in Go](https://www.digitalocean.com/community/tutorials/creating-custom-errors-in-go)
* [20/52 Handling Panics in Go](https://www.digitalocean.com/community/tutorials/handling-panics-in-go)
* [21/52 Importing Packages in Go](https://www.digitalocean.com/community/tutorials/importing-packages-in-go)
* [22/52 How To Write Packages in Go](https://www.digitalocean.com/community/tutorials/how-to-write-packages-in-go)
* [23/52 Understanding Package Visibility in Go](https://www.digitalocean.com/community/tutorials/understanding-package-visibility-in-go)
* [24/52 How To Write Conditional Statements in Go](https://www.digitalocean.com/community/tutorials/how-to-write-conditional-statements-in-go)
* [25/52 How To Write Switch Statements in Go](https://www.digitalocean.com/community/tutorials/how-to-write-switch-statements-in-go)
* [26/52 How To Construct For Loops in Go](https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-go)
* [27/52 Using Break and Continue Statements When Working with Loops in Go](https://www.digitalocean.com/community/tutorials/using-break-and-continue-statements-when-working-with-loops-in-go)
* [28/52 How To Define and Call Functions in Go](https://www.digitalocean.com/community/tutorials/how-to-define-and-call-functions-in-go)
* [29/52 How To Use Variadic Functions in Go](https://www.digitalocean.com/community/tutorials/how-to-use-variadic-functions-in-go)
* [30/52 Understanding defer in Go](https://www.digitalocean.com/community/tutorials/understanding-defer-in-go)
* [31/52 Understanding init in Go](https://www.digitalocean.com/community/tutorials/understanding-init-in-go)
* [32/52 Customizing Go Binaries with Build Tags](https://www.digitalocean.com/community/tutorials/customizing-go-binaries-with-build-tags)
* [33/52 Understanding Pointers in Go](https://www.digitalocean.com/community/conceptual_articles/understanding-pointers-in-go)
* [34/52 Defining Structs in Go](https://www.digitalocean.com/community/tutorials/defining-structs-in-go)
* [35/52 Defining Methods in Go](https://www.digitalocean.com/community/tutorials/defining-methods-in-go)
* [36/52 How To Build and Install Go Programs](https://www.digitalocean.com/community/tutorials/how-to-build-and-install-go-programs)
* [37/52 How To Use Struct Tags in Go](https://www.digitalocean.com/community/tutorials/how-to-use-struct-tags-in-go)
* [38/52 How To Use Interfaces in Go](https://www.digitalocean.com/community/tutorials/how-to-use-interfaces-in-go)
* [39/52 Building Go Applications for Different Operating Systems and Architectures](https://www.digitalocean.com/community/tutorials/building-go-applications-for-different-operating-systems-and-architectures)
* [40/52 Using ldflags to Set Version Information for Go Applications](https://www.digitalocean.com/community/tutorials/using-ldflags-to-set-version-information-for-go-applications)
* [41/52 How To Use the Flag Package in Go](https://www.digitalocean.com/community/tutorials/how-to-use-the-flag-package-in-go)
* [42/52 How to Use Go Modules](https://www.digitalocean.com/community/tutorials/how-to-use-go-modules)
* [43/52 How to Distribute Go Modules](https://www.digitalocean.com/community/tutorials/how-to-distribute-go-modules)
* [44/52 How to Use a Private Go Module in Your Own Project](https://www.digitalocean.com/community/tutorials/how-to-use-a-private-go-module-in-your-own-project)
* [45/52 How To Run Multiple Functions Concurrently in Go](https://www.digitalocean.com/community/tutorials/how-to-run-multiple-functions-concurrently-in-go)
* [46/52 How to Add Extra Information to Errors in Go](https://www.digitalocean.com/community/tutorials/how-to-add-extra-information-to-errors-in-go)
* [47/52 How To Use Dates and Times in Go](https://www.digitalocean.com/community/tutorials/how-to-use-dates-and-times-in-go)
* [48/52 How To Use Contexts in Go](https://www.digitalocean.com/community/tutorials/how-to-use-contexts-in-go)
* [49/52 How To Use JSON in Go](https://www.digitalocean.com/community/tutorials/how-to-use-json-in-go)
* [50/52 How To Make an HTTP Server in Go](https://www.digitalocean.com/community/tutorials/how-to-make-an-http-server-in-go)
* [51/52 How To Make HTTP Requests in Go](https://www.digitalocean.com/community/tutorials/how-to-make-http-requests-in-go)
* [52/52 How To Use Generics in Go](https://www.digitalocean.com/community/tutorials/how-to-use-generics-in-go)

| Repository | Stars | Converts `byte != 0` to `bool`? |
| --- | --: | --- |
| [golang/go](https://github.com/golang/go) | 19,683 | No |
| [hybridgroup/gobot](https://github.com/hybridgroup/gobot) | 2,278 | [Yes](https://sourcegraph.com/github.com/hybridgroup/gobot@fe057ba6bf2b3061f440f82f6231e3ca9493cbdd/-/info/GoPackage/github.com/hybridgroup/gobot/platforms/bebop/client/-/bool2int8) |
| [streadway/amqp](https://github.com/streadway/amqp) | 933 | [Yes](https://sourcegraph.com/github.com/streadway/amqp/-/blob/read.go#L174-179) |
| [vishvananda/netlink](https://github.com/vishvananda/netlink) | 216 | No |
| [GoBelieveIO/im\_service](https://github.com/GoBelieveIO/im_service) | 170 | No |
| [zeromq/zproto](https://github.com/zeromq/zproto) | 114 | No |
| [istreamdata/orientgo](https://github.com/istreamdata/orientgo) | 98 | [Yes](https://sourcegraph.com/gopkg.in/istreamdata/orientgo.v2/-/blob/obinary/rw/reader.go#L124-129) |
| [mitchellh/go-vnc](https://github.com/mitchellh/go-vnc) | 93 | [Yes](https://sourcegraph.com/github.com/mitchellh/go-vnc/-/blob/client.go#L169-181) |

## 🚩 Useful library

* Быстрый HTTP сервер с использованием [valyala/fasthttp](https://github.com/valyala/fasthttp)
* Парсинг User-Agent через [mssola/user\_agent](https://github.com/mssola/user_agent)
* Взаимодействие с GeoIP через [oschwald/geoip2-golang](https://github.com/oschwald/geoip2-golang)
* Быстрый - замена стандартному парсеру github.com/json-iterator/go
* [Firmata](https://github.com/firmata/protocol), как протокол для взаимодействия с ESP8266
* [Gobot](https://github.com/hybridgroup/gobot), как фреймворк для работы с Firmata

## [README](https://github.com/VyacheslavGoryunov/remote-relay-gobot/tree/master/firmware/test#readme)

This directory is intended for PlatformIO Unit Testing and project tests.

Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.

More information about PlatformIO Unit Testing:
- [https://docs.platformio.org/page/plus/unit-testing.html](https://docs.platformio.org/page/plus/unit-testing.html)

An overview of tools that will help improve your Go code

## [](https://github.com/golang/go/wiki/CodeTools#all-in-one)All-in-one

* [golangci-lint](https://github.com/golangci/golangci-lint) - Bundle of `gofmt`, `golint`, `govet` and many other tools that shares work between the different linters for better performance. Recommended by the original author to replace gometalinter (Drop-in replacement).
* DEPRECATED: [gometalinter](https://github.com/alecthomas/gometalinter) - Automates the installation, configuration and application of `gofmt`, `golint`, `govet` and several other code validation tools.

## [](https://github.com/golang/go/wiki/CodeTools#code-formatting)Code Formatting

### [](https://github.com/golang/go/wiki/CodeTools#articles)Articles

* [Formatting Go Code with gofmt](http://golangtutorials.blogspot.com/2011/06/formatting-go-code-with-gofmt.html)

### [](https://github.com/golang/go/wiki/CodeTools#tools)Tools

* [air](https://github.com/cosmtrek/air) - Live reload for Go apps
* [gofmt](https://pkg.go.dev/cmd/gofmt/) - Start with the standard Go code formatter.
* [golint](https://github.com/golang/lint) - Detects style mistakes in Go code.
* [goimports](https://pkg.go.dev/golang.org/x/tools/cmd/goimports) - Format code and fix your import statements.
* [gofumpt](https://github.com/mvdan/gofumpt) - A stricter gofmt.
* [revive](https://github.com/mgechev/revive) - Fast, configurable, extensible, flexible, and beautiful linter for Go.

## [](https://github.com/golang/go/wiki/CodeTools#code-generation-templating-and-generics)Code generation, Templating and Generics

* [json-to-go](https://mholt.github.io/json-to-go/) - Generate Go structs from JSON.
* [Go gen](http://clipperhouse.github.io/gen/) - Type-driven code generation (generics)
* [gojson](https://github.com/ChimeraCoder/gojson) - Another Go struct generator.
* [gotemplate](https://github.com/ncw/gotemplate) - Package-based templating system for Go.
* [sqlgen](https://github.com/drone/sqlgen) - Generate Go code for SQL interactions.
* [zek](https://github.com/miku/zek) - Generate Go struct from XML.
* [apidocgen](https://github.com/alovn/apidocgen) - Generate web apis markdown docs and mocks.

## [](https://github.com/golang/go/wiki/CodeTools#refactoring)Refactoring

### [](https://github.com/golang/go/wiki/CodeTools#articles-1)Articles

* [gorename - easy refactoring](https://texlution.com/post/gorename/)
* [Refactoring Tools](http://blog.ralch.com/tutorial/golang-tools-refactoring/) - An overview of refactoring tools for Go.
* [Quick renaming with gofmt](http://technosophos.com/2015/09/26/quick-go-hack-renaming-structs.html)

### [](https://github.com/golang/go/wiki/CodeTools#tools-1)Tools

* [eg](https://pkg.go.dev/golang.org/x/tools/cmd/eg) - Example-based refactoring tool for Go.
* [gofmt](https://pkg.go.dev/cmd/gofmt/) - Start with the standard Go code formatter.
* [gorename](https://golang.org/x/tools/refactor/rename) - Renaming tool for Go.

## [](https://github.com/golang/go/wiki/CodeTools#error-detection)Error Detection

### [](https://github.com/golang/go/wiki/CodeTools#articles-2)Articles

* [Go Inspection Tools](https://blog.ralch.com/articles/golang-tools-inspection/) - An overview of tools for Go code inspection.

### [](https://github.com/golang/go/wiki/CodeTools#tools-2)Tools

* [AlignCheck, StructCheck, VarCheck](https://github.com/opennota/check/) - A suite of tools for checking your code.
* [errcheck](https://github.com/kisielk/errcheck) - Ensure you check your error conditions.
* [go vet](https://pkg.go.dev/cmd/vet/) - Read this first on how to use the `go vet` command.
* [SafeSQL](https://github.com/stripe/safesql) - Protect against unsafe SQL in your code.

## [](https://github.com/golang/go/wiki/CodeTools#navigation)Navigation

* [Go Guru - User Manual](https://go.dev/s/using-guru) - A tool for understanding Go code.
* [Pythia](https://github.com/fzipp/pythia) - A browser-based UI for Go Guru.

## [](https://github.com/golang/go/wiki/CodeTools#visualization)Visualization

* [godepgraph](http://github.com/kisielk/godepgraph) - A tool for generating dependency graphs of Go code.

## 💎 Course videos

### [](https://github.com/techschool/simplebank#section-1-working-with-database-postgres)Section 1: Working with database \[Postgres\]

* Lecture #1: [Design DB schema and generate SQL code with dbdiagram.io](https://www.youtube.com/watch?v=rx6CPDK_5mU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=1)
* Lecture #2: [Install & use Docker + Postgres + TablePlus to create DB schema](https://www.youtube.com/watch?v=Q9ipbLeqmQo&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=2)
* Lecture #3: [How to write & run database migration in Golang](https://www.youtube.com/watch?v=0CYkrGIJkpw&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=3)
* Lecture #4: [Generate CRUD Golang code from SQL | Compare db/sql, gorm, sqlx & sqlc](https://www.youtube.com/watch?v=prh0hTyI1sU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=4)
* Lecture #5: [Write unit tests for database CRUD with random data in Golang](https://www.youtube.com/watch?v=phHDfOHB2PU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=5)
* Lecture #6: [A clean way to implement database transaction in Golang](https://www.youtube.com/watch?v=gBh__1eFwVI&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=6)
* Lecture #7: [DB transaction lock & How to handle deadlock in Golang](https://www.youtube.com/watch?v=G2aggv_3Bbg&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=7)
* Lecture #8: [How to avoid deadlock in DB transaction? Queries order matters!](https://www.youtube.com/watch?v=qn3-5wdOfoA&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=8)
* Lecture #9: [Deeply understand transaction isolation levels & read phenomena in MySQL & PostgreSQL](https://www.youtube.com/watch?v=4EajrPgJAk0&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=9)
* Lecture #10: [Setup Github Actions for Golang + Postgres to run automated tests](https://www.youtube.com/watch?v=3mzQRJY1GVE&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=10)

### [](https://github.com/techschool/simplebank#section-2-building-restful-http-json-api-gin)Section 2: Building RESTful HTTP JSON API \[Gin\]

* Lecture #11: [Implement RESTful HTTP API in Go using Gin](https://www.youtube.com/watch?v=n_Y_YisgqTw&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=11)
* Lecture #12: [Load config from file & environment variables in Go with Viper](https://www.youtube.com/watch?v=n5p8HkO6bnE&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=12)
* Lecture #13: [Mock DB for testing HTTP API in Go and achieve 100% coverage](https://www.youtube.com/watch?v=rL0aeMutoJ0&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=13)
* Lecture #14: [Implement transfer money API with a custom params validator](https://www.youtube.com/watch?v=5q_wsashJZA&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=14)
* Lecture #15: [Add users table with unique & foreign key constraints in PostgreSQL](https://www.youtube.com/watch?v=D4VtNC3vQUs&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=15)
* Lecture #16: [How to handle DB errors in Golang correctly](https://www.youtube.com/watch?v=mJ8b5GcvoxQ&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=16)
* Lecture #17: [How to securely store passwords? Hash password in Go with Bcrypt!](https://www.youtube.com/watch?v=B3xnJI2lHmc&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=17)
* Lecture #18: [How to write stronger unit tests with a custom gomock matcher](https://www.youtube.com/watch?v=DuzBE0jKOgE&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=18)
* Lecture #19: [Why PASETO is better than JWT for token-based authentication?](https://www.youtube.com/watch?v=nBGx-q52KAY&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=19)
* Lecture #20: [How to create and verify JWT & PASETO token in Golang](https://www.youtube.com/watch?v=Oi4FHDGILuY&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=20)
* Lecture #21: [Implement login user API that returns PASETO or JWT access token in Go](https://www.youtube.com/watch?v=lnHbZ9GOGAs&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=21)
* Lecture #22: [Implement authentication middleware and authorization rules in Golang using Gin](https://www.youtube.com/watch?v=Pw8fVBRS4jA&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=22)

### [](https://github.com/techschool/simplebank#section-3-deploying-the-application-to-production-kubernetes--aws)Section 3: Deploying the application to production \[Kubernetes + AWS\]

* Lecture #23: [Build a minimal Golang Docker image with a multistage Dockerfile](https://www.youtube.com/watch?v=p1dwLKAxUxA&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=23)
* Lecture #24: [How to use docker network to connect 2 stand-alone containers](https://www.youtube.com/watch?v=VcFnqQarpjI&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=24)
* Lecture #25: [How to write docker-compose file and control service start-up orders with wait-for.sh](https://www.youtube.com/watch?v=jf6sQsz0M1M&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=25)
* Lecture #26: [How to create a free tier AWS account](https://www.youtube.com/watch?v=4UqN1P8pIkM&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=26)
* Lecture #27: [Auto build & push docker image to AWS ECR with Github Actions](https://www.youtube.com/watch?v=3M4MPmSWt9E&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=27)
* Lecture #28: [How to create a production DB on AWS RDS](https://www.youtube.com/watch?v=0EaG3T4Q5fQ&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=28)
* Lecture #29: [Store & retrieve production secrets with AWS secrets manager](https://www.youtube.com/watch?v=3i1mQ_Ye8jE&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=29)
* Lecture #30: [Kubernetes architecture & How to create an EKS cluster on AWS](https://www.youtube.com/watch?v=TxnCMhYhqRU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=30)
* Lecture #31: [How to use kubectl & k9s to connect to a kubernetes cluster on AWS EKS](https://www.youtube.com/watch?v=hwMevai3_wQ&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=31)
* Lecture #32: [How to deploy a web app to Kubernetes cluster on AWS EKS](https://www.youtube.com/watch?v=PH-Mcd0Rs1w&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=32)
* Lecture #33: [Register a domain name & set up A-record using Route53](https://www.youtube.com/watch?v=-JF2ukmW3i8&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=33)
* Lecture #34: [How to use Ingress to route traffics to different services in Kubernetes](https://www.youtube.com/watch?v=lBrqP6FkNsU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=34)
* Lecture #35: [Automatic issue TLS certificates in Kubernetes with Let's Encrypt](https://www.youtube.com/watch?v=nU4FTjrgSKI&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=35)
* Lecture #36: [Automatic deploy to Kubernetes with Github Action](https://www.youtube.com/watch?v=GVY-zze0V_U&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=36)

### [](https://github.com/techschool/simplebank#section-4-advanced-backend-topics-grpc)Section 4: Advanced Backend Topics \[gRPC\]

* Lecture #37: [How to manage user session with refresh token - Golang](https://www.youtube.com/watch?v=rT20ylRLm5U&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=37)
* Lecture #38: [Generate DB documentation page and schema SQL dump from DBML](https://www.youtube.com/watch?v=dGfVwsPr-IU&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=38)
* Lecture #39: [Introduction to gRPC](https://www.youtube.com/watch?v=mRGnA3wPxMM&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=39)
* Lecture #40: [Define gRPC API and generate Go code with protobuf](https://www.youtube.com/watch?v=mVWgEmyAhvM&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=40)
* Lecture #41: [How to run a golang gRPC server and call its API](https://www.youtube.com/watch?v=BkfBJIS0_ro&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=41)
* Lecture #42: [Implement gRPC API to create and login users in Go](https://www.youtube.com/watch?v=7xiWqyZW9lE&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=42)
* Lecture #43: [Write code once, serve both gRPC & HTTP requests](https://www.youtube.com/watch?v=3FfDH3d0aHs&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=43)
* Lecture #44: [How to extract info from gRPC metadata](https://www.youtube.com/watch?v=Sno10WQ21Zs&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=44)
* Lecture #45: [Automatic generate & serve Swagger docs from Go server](https://www.youtube.com/watch?v=Uwkxxee7tvk&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=45)
* Lecture #46: [Embed static frontend files inside Golang backend server's binary](https://www.youtube.com/watch?v=xNgOIm86N5Q&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=46)
* Lecture #47: [Validate gRPC parameters and send human/machine friendly response](https://www.youtube.com/watch?v=CxZ9hMtmZtc&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=47)
* Lecture #48: [Run DB migrations directly inside Golang code](https://www.youtube.com/watch?v=TG43cMpaxlI&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=48)
* Lecture #49: [Partial update DB record with SQLC nullable parameters](https://www.youtube.com/watch?v=I2sbw1PzzW0&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=50)
* Lecture #50: [Build gRPC update API with optional parameters](https://www.youtube.com/watch?v=ygqSHIEc8sc&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=51)
* Lecture #51: [Add authorization to protect gRPC API](https://www.youtube.com/watch?v=_jqNs3d99ps&list=PLy_6D98if3ULEtXtNSY_2qN21VCKgoQAE&index=52)

## [](https://github.com/techschool/simplebank#simple-bank-service)Simple bank service

The service that we’re going to build is a simple bank. It will provide APIs for the frontend to do following things:

1. Create and manage bank accounts, which are composed of owner’s name, balance, and currency.
2. Record all balance changes to each of the account. So every time some money is added to or subtracted from the account, an account entry record will be created.
3. Perform a money transfer between 2 accounts. This should happen within a transaction, so that either both accounts’ balance are updated successfully or none of them are.

## [](https://github.com/techschool/simplebank#setup-local-development)Setup local development

### [](https://github.com/techschool/simplebank#install-tools)Install tools

* [Docker desktop](https://www.docker.com/products/docker-desktop)
* [TablePlus](https://tableplus.com/)
* [Golang](https://golang.org/)
* [Homebrew](https://brew.sh/)
* [Migrate](https://github.com/golang-migrate/migrate/tree/master/cmd/migrate)

```shell
brew install golang-migrate
```

* [DB Docs](https://dbdocs.io/docs)

```shell
npm install -g dbdocs
dbdocs login
```

* [DBML CLI](https://www.dbml.org/cli/#installation)

```shell
npm install -g @dbml/cli
dbml2sql --version
```

* [Sqlc](https://github.com/kyleconroy/sqlc#installation)
```shell
brew install sqlc
```

* [Gomock](https://github.com/golang/mock)
```shell
go install github.com/golang/mock/[email protected]
```

### [](https://github.com/techschool/simplebank#setup-infrastructure)Setup infrastructure

* Create the bank-network
```shell
make network
```

* Start postgres container:
```shell
make postgres
```

* Create simple\_bank database:
```shell
make createdb
```

* Run db migration up all versions:
```shell
make migrateup
```

* Run db migration up 1 version:
```shell
make migrateup1
```

* Run db migration down all versions:
```shell
make migratedown
```

* Run db migration down 1 version:
```shell
make migratedown1
```

### [](https://github.com/techschool/simplebank#documentation)Documentation

* Generate DB documentation:
```shell
make db_docs
```

* Access the DB documentation at [this address](https://dbdocs.io/techschool.guru/simple_bank). Password: `secret`

### [](https://github.com/techschool/simplebank#how-to-generate-code)How to generate code

* Generate schema SQL file with DBML:
```shell
make db_schema
```

* Generate SQL CRUD with sqlc:
```shell
make sqlc
```

* Generate DB mock with gomock:
```shell
make mock
```

* Create a new db migration:

```shell
migrate create -ext sql -dir db/migration -seq
```

### [](https://github.com/techschool/simplebank#how-to-run)How to run

* Run server:
```shell
make server
```

* Run test:
```shell
make test
```

## [](https://github.com/techschool/simplebank#deploy-to-kubernetes-cluster)Deploy to kubernetes cluster

* [Install nginx ingress controller](https://kubernetes.github.io/ingress-nginx/deploy/#aws):

```shell
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/aws/deploy.yaml
```

* [Install cert-manager](https://cert-manager.io/docs/installation/kubernetes/):

```shell
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.yaml
```


## ⚒ Advanced
# Golang Advanced Tutorial

Posted on [November 22, 2020June 15, 2021](https://golangbyexample.com/golang-comprehensive-tutorial/) by [admin](https://golangbyexample.com/author/admin/)

### ⚙ Table of Contents

* [Overview](https://golangbyexample.com/golang-comprehensive-tutorial/#Overview "Overview")
* [Golang Basic Tutorial](https://golangbyexample.com/golang-comprehensive-tutorial/#Golang_Basic_Tutorial "Golang Basic Tutorial")
* [About](https://golangbyexample.com/golang-comprehensive-tutorial/#About "About")
* [Basics](https://golangbyexample.com/golang-comprehensive-tutorial/#Basics "Basics")
* [Loops/Iterations/Flow Control](https://golangbyexample.com/golang-comprehensive-tutorial/#LoopsIterationsFlow_Control "Loops/Iterations/Flow Control")
* [More Types](https://golangbyexample.com/golang-comprehensive-tutorial/#More_Types "More Types")
* [Concurrency](https://golangbyexample.com/golang-comprehensive-tutorial/#Concurrency "Concurrency")
* [Error Handling](https://golangbyexample.com/golang-comprehensive-tutorial/#Error_Handling "Error Handling")
* [Golang Advanced Tutorial](https://golangbyexample.com/golang-comprehensive-tutorial/#Golang_Advanced_Tutorial "Golang Advanced Tutorial")
* [OOPS in Golang](https://golangbyexample.com/golang-comprehensive-tutorial/#OOPS_in_Golang "OOPS in Golang")
* [Others](https://golangbyexample.com/golang-comprehensive-tutorial/#Others "Others")
* [All Design Patterns in Golang](https://golangbyexample.com/golang-comprehensive-tutorial/#All_Design_Patterns_in_Golang "All Design Patterns in Golang")
* [Creational Design Patterns](https://golangbyexample.com/golang-comprehensive-tutorial/#Creational_Design_Patterns "Creational Design Patterns")
* [Behavioural Design Patterns](https://golangbyexample.com/golang-comprehensive-tutorial/#Behavioural_Design_Patterns "Behavioural Design Patterns")
* [Structural Design Patterns](https://golangbyexample.com/golang-comprehensive-tutorial/#Structural_Design_Patterns "Structural Design Patterns")
* [Data Structures in Golang](https://golangbyexample.com/golang-comprehensive-tutorial/#Data_Structures_in_Golang "Data Structures in Golang")

## **Overview**

Welcome to the Golang advanced tutorial series. The tutorial in this series are elaborative and we have tried to cover all concepts with examples. This tutorial is for those who are looking to gain expertise and a solid understanding of golang. We are looking for feedback as well if you find any mistakes or any improvements to be done.

Here is the link to the golang official website for reference [https://golang.org/](https://golang.org/)

This tutorial is divided into four parts

* Golang Basic Topics
* Golang Advanced Topics
* All Design Patterns in Golang
* Data structures in Golang

## **Golang Basic Tutorial**
Let’s see some basic topics in go first

### **About**
* Chapter 1   – [About Golang](https://golangbyexample.com/about-golang/)
* Chapter 2   – [GO installation](https://golangbyexample.com/golang-installation/)
* Chapter 3   – [Set up Go Workspace and hello world program](https://golangbyexample.com/workspace-hello-world-golang)

### **Basics**
* Chapter 4   – [Packages and Modules – Part 1](https://golangbyexample.com/packages-modules-go-first)
* Chapter 5   – [Packages and Modules – Part 2](https://golangbyexample.com/packages-modules-go-second/)
* Chapter 6   – [Variables](https://golangbyexample.com/variables-in-golang-complete-guide/)
* Chapter 7   – [All basic data types](https://golangbyexample.com/all-basic-data-types-golang/)
* Chapter 8   – [Functions](https://golangbyexample.com/function-golang-complete-guide/)
* Chapter 9   – [Constants](https://golangbyexample.com/constant-golang/)

### **Loops/Iterations/Flow Control**
* Chapter 10 – [For Loop](https://golangbyexample.com/for-loop-in-golang/)
* Chapter 11 – [For Range loop](https://golangbyexample.com/understand-for-range-loop-golang/)
* Chapter 12 – [If Else](https://golangbyexample.com/understand-if-else-statement-golang/)
* Chapter 13 – [Switch](https://golangbyexample.com/switch-statement-golang/)
* Chapter 14 – [Defer keyword](https://golangbyexample.com/defer-golang)

### **More Types**
* Chapter 15 – [Pointer](https://golangbyexample.com/pointer-golang/)
* Chapter 16 – [Struct](https://golangbyexample.com/struct-in-golang-complete-guide/)
* Chapter 17 – [Array](https://golangbyexample.com/understanding-array-golang-complete-guid)
* Chapter 18 – [Slice](https://golangbyexample.com/slice-in-golang/)
* Chapter 19 – [Maps](https://golangbyexample.com/maps-in-golang)
* Chapter 20 – [Method](https://golangbyexample.com/method-in-golang/)
* Chapter 21 – [Interface](https://golangbyexample.com/interface-in-golang/)
* Chapter 22 – [Iota](https://golangbyexample.com/iota-in-golang)

### **Concurrency**
* Chapter 23 – [Goroutines](https://golangbyexample.com/goroutines-golang/)
* Chapter 24 – [Channel](https://golangbyexample.com/channel-golang/)
* Chapter 25 – [Select Statement](https://golangbyexample.com/select-statement-golang/)

### **Error Handling**
* Chapter 26 – [Error](https://golangbyexample.com/error-in-golang/)
* Chapter 27 – [Error -Part 2](https://golangbyexample.com/error-in-golang-advanced/)
* Chapter 28- [Panic and Recover](https://golangbyexample.com/panic-and-recover-golang/)

## **Golang Advanced Tutorial**
Let’s look at some advanced topics in go now.

### **OOPS in Golang**
* [OOP: Inheritance in GOLANG complete guide](https://golangbyexample.com/oop-inheritance-golang-complete/)
* [Encapsulation in Golang](https://golangbyexample.com/encapsulation-in-go/)
* [Runtime Polymorphism](https://golangbyexample.com/runtime-polymorphism-go/)
* [Compile Time Polymorphism](https://golangbyexample.com/compile-time-polymorphism-go/)

### **Others**
* [Understanding time and date in Go](https://golangbyexample.com/all-about-time-and-date-golang/)
* [Using Context Package in GO Complete Guide](https://golangbyexample.com/using-context-in-golang-complete-guide/)
* [Goto statement in go](https://golangbyexample.com/goto-statement-go/)
* [More about uintptr](https://golangbyexample.com/understanding-uintptr-golang)
* [Basic HTTP server implementation](https://golangbyexample.com/basic-http-server-go/)

## **All Design Patterns in Golang**
Below is the list of all design patterns in go

### **Creational Design Patterns**
* [Abstract Factory](https://golangbyexample.com/abstract-factory-design-pattern-go/)
* [Builder](https://golangbyexample.com/builder-pattern-golang/)
* [Factory](https://golangbyexample.com/golang-factory-design-pattern/)
* [Object Pool](https://golangbyexample.com/golang-object-pool/)
* [Prototype](https://golangbyexample.com/prototype-pattern-go/)
* [Singleton](https://golangbyexample.com/singleton-design-pattern-go/)

### **Behavioural Design Patterns**
* [Chain of Responsiblity](https://golangbyexample.com/chain-of-responsibility-design-pattern-in-golang/)
* [Command](https://golangbyexample.com/command-design-pattern-in-golang/)
* [Iterator](https://golangbyexample.com/go-iterator-design-pattern/)
* [Mediator](https://golangbyexample.com/mediator-design-pattern-golang/)
* [Memento](https://golangbyexample.com/memento-design-pattern-go/)
* [Null Object](https://golangbyexample.com/null-object-design-pattern-golang/)
* [Observer](https://golangbyexample.com/observer-design-pattern-golang/)
* [State](https://golangbyexample.com/state-design-pattern-go/)
* [Template Method](https://golangbyexample.com/template-method-design-pattern-golang/)
* [Visitor](https://golangbyexample.com/visitor-design-pattern-go/)

### **Structural Design Patterns**
* [Adapter](https://golangbyexample.com/adapter-design-pattern-go/)
* [Bridge](https://golangbyexample.com/bridge-design-pattern-in-go/)
* [Composite](https://golangbyexample.com/composite-design-pattern-golang/)
* [Decorator](https://golangbyexample.com/decorator-pattern-golang/)
* [Facade](https://golangbyexample.com/facade-design-pattern-in-golang/)
* [Flyweight](https://golangbyexample.com/flyweight-design-pattern-golang/)
* [Proxy](https://golangbyexample.com/proxy-design-pattern-in-golang/)

## **Data Structures in Golang**
* [Queue](https://golangbyexample.com/queue-in-golang/)
* [Stack](https://golangbyexample.com/stack-in-golang/)
* [Set](https://golangbyexample.com/set-implementation-in-golang/)
* [Linked List](https://golangbyexample.com/singly-linked-list-in-golang/)
* [Doubly Linked List](https://golangbyexample.com/doubly-linked-list-golang/)
* Binary Search Tree
* [Recursive](https://golangbyexample.com/binary-search-tree-in-go)
* [Iterative](https://golangbyexample.com/iterative-binary-search-tree-go/)
* Heap
* [Minheap](https://golangbyexample.com/minheap-in-golang/)
* [Maxheap](https://golangbyexample.com/maxheap-in-golang/)
* [Trie](https://golangbyexample.com/trie-implementation-in-go/)