Golang - Go
- Introduction
- Design Patterns
- Tutorials
- Kubernetes Client Go
- Building container images
- Go cheatsheets
- Go Frameworks and libraries
- Go packages
- Go Tools
- Go Books
- Go Samples
- Dockerfile for go
- Videos
- Tweets
Introduction
- golang.org
- github.com/golang/go
- wikipedia: Go
- golang-design/history Go: A Documentary. This document collects many interesting (publicly observable) issues, discussions, proposals, CLs, and talks from the Go development process, which intents to offer a comprehensive reference of the Go history.
- Awesome Go π
- Zepto is a lightweight framework for the development of microservices & web services in golang
- medium: Microservices in Go
- search.gocenter.io: JFrog Go Center Host your Go-based applications for free on the JFrog Platform.
- dev.to: Deploying Your First Golang Webapp
- eli.thegreenplace.net: REST Servers in Go: Part 4 - using OpenAPI and Swagger
- blog.getambassador.io: Debugging Go Microservices in Kubernetes with VScode Tutorial: Learn to debug Go microservices locally while testing against dependencies in a remote Kubernetes cluster
- developers.redhat.com: Using Delve to debug Go programs on Red Hat Enterprise Linux
- Golang for Node.js Developers
- The Ultimate Go Study Guide
- ammeon.com: Profiling golang microservices for high throughput on kubernetes/openshift clusters
- cyberciti.biz: How to install Go [golang] on Ubuntu Linux
- developer.okta.com: Elasticsearch in Go: A Developer’s Guide
- go-ini/ini Package ini provides INI file read and write functionality in Go
- rakyll/go-test-trace π Go test with tracing. go-test-trace is like go test but it also generates distributed traces. Generated traces are exported in OTLP to a OpenTelemetry collector. You need to run go-test-trace alongside a collector to export data to distributed tracing service.
- hashicorp.com: 8 Best Practices for Writing Secure Go Code
- thenewstack.io: Getting Started with Go and InfluxDB
- go.dev: A new search experience on pkg.go.dev
- quii/learn-go-with-tests Learn Go with test-driven development
- itnext.io: Go Does Not Need a Java Style GC Why does Go not need a fancy expensive garbage collector like Java and C#? - erik-engheim.medium.com: Go Does Not Need a Java Style GC
- levelup.gitconnected.com: Generics in Go: Viva La Revolution!
- teivah.medium.com: When to Use Generics in Go?
- dev.to: JSON Schema Validation in Golang
- blog.logrocket.com: How to build a blockchain from scratch with Go
- dev.to: Rate limiting HTTP requests in Go using Redis
- dev.to: Understanding and Crafting HTTP Middlewares in Go
- dev.to: Getting started with Go-Lang
- miguelmota/golang-for-nodejs-developers Examples of Golang compared to Node.js for learning
- blog.logrocket.com: Building a simple app with Go and PostgreSQL
- datastation.multiprocess.io: Speeding up Go’s builtin JSON encoder up to 55% for large arrays of objects
- betterprogramming.pub: Writing My First Microservice Using Go
- dev.to/mavensingh: Advantages and Disadvantages of Go
- levelup.gitconnected.com: Concurrency in Go: shared memory
- luk4z7/go-concurrency-guide: Go Concurrency Guide π Practical concurrency guide in Go, communication by channels, patterns
- medium.com/datascale: Know GOMAXPROCS before deploying your GO app to Kubernetes In this article, you will learn why setting GOMAXPROCS for your Go apps is crucial in Kubernetes. And you’ll discover why it’s better to assign a full-core CPU to your Go containers.
- dev.to: Getting Started With Go (golang) | Michael Levan
Design Patterns
- aly.arriqaaq.com: Golang Design Patterns in Kubernetes
- github.com/paliimx: Data Structures and Algorithms implementation in Go Clean and simple implementation in Go
Tutorials
- dev.to: Create a Restful API with Golang from scratch π
- itnext.io: Generically working with Kubernetes objects in Go Using the unstructured package from k8s API machinery
Kubernetes Client Go
- An example of using dynamic client of k8s.io/client-go
- medium: Using the Go client framework π
- iximiuz.com: How To Call Kubernetes API using Go - Types and Common Machinery
- itnext.io: Generically working with Kubernetes objects in Go Using the unstructured package from k8s API machinery. In this post youβll learn how to work with live Kubernetes objects in Go using the typed and dynamic clients available from the API machinery sub-project client-go.
- medium.com/codex: Explore client-go Informer Patterns Invoke the Kubernetes resources without overloading the cluster. Many popular Kubernetes tools such as K9s are based on client-go. They use the informer pattern to continuously refresh data without posing additional pressure to the API Server. Learn how the informer pattern works in this article.
- dev.to: Watch and react to Kubernetes objects changes client-go is the official client library for the Go programming language. In this article, you will learn how to use RESTClient to watch and then react to namespaces changes.
- shahin-mahmud.medium.com: Write your first Kubernetes operator in go
- collabnix.com: Kubernetes CRUD Operation using Go on Docker Desktop
- blog.kubesimplify.com: Perform CRUD Operations on Kubernetes Using Golang π
Building container images
Go cheatsheets
- devhints.io/go: Go cheatsheet
- github.com: golang-cheat-sheet
- jimmysong.io/cheatsheets/go
- simplecheatsheet.com/tag/golang-cheat-sheet
- a8m/golang-cheat-sheet An overview of Go syntax and features.
Go Frameworks and libraries
- go-micro Go Micro is a framework for distributed systems development
- dapr.io
- reddit.com: What is the best microservice framework in Go?
- Masterminds/sprig: Sprig: Template functions for Go templates Useful template functions for Go templates. The Go language comes with a built-in template language, but not very many template functions. Sprig is a library that provides more than 100 commonly used template functions.
- go-kratos/kratos A modular-designed and easy-to-use microservices framework in Go.
- gnet π gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet
- dsa0x/sicher Sicher is a go module that allows secure storage of encrypted credentials in a version control system.
- ggicci/httpin: HTTP Input for Go Decode an HTTP request into a custom struct
- kubernetes-sigs/e2e-framework A Go framework for end-to-end testing of components running in Kubernetes clusters.
- forbearing/k8s This Go library implements various handlers to more easily manipulate kubernetes resources such as pods, deployments, etc, inside or outside a Kubernetes cluster
- medium.com/vedcraft: Top Microservices Frameworks in Go Go has been designed to be a modern language β there are scenarios where you donβt need a package or framework as you can leverage standard packages (such as net/http).
Go packages
- cap A collection of authentication Go packages related to OIDC, JWKs and Distributed Claims.
- volatiletech/sqlboiler Generate a Go ORM tailored to your database schema.
Go Tools
- jcchavezs/porto Tool for adding vanity imports URI to Go files. If you want to enforce vanity import paths, it automates the addition of the import directive.
- mholt/json-to-go Translates JSON into a Go type in your browser instantly (original)
- curl-to-go Instantly convert curl commands to Go code
- kkdai/youtube Download Youtube Video in Golang
- github.com/iawia002/lux π πΎ Fast and simple video download library and CLI tool written in Go
- github.com/Email-Dashboard: An interactive emailing management service with scheduling, templating, tracking and A/B testing.
- gobrew π Go version manager. Super simple tool to install and manage Go versions. Install go without root. Gobrew doesn’t require shell rehash.
- github.com/groundcover-com: Container Restarts Watcher
- create-go-app/cli Create a new production-ready project with backend, frontend and deploy automation by running one CLI command!
- Delve: a debugger for the Go Programming Language
- alexsniffin.medium.com: Debugging Remotely with Go in Kubernetes In this tutorial, you will learn how to debug an application deployed in Kubernetes remotely using VS Code and Delve
Go Books
- https://github.com/dariubs/GoBooks
- https://lets-go.alexedwards.net Learn to Build Professional Web Applications with Go
Go Samples
- inancgumus/learngo π A Huge Number of Go Examples, Exercises and Quizzes.
- GoogleCloudPlatform/golang-samples: Sample apps and code written for Google Cloud in the Go programming language.
- rehacktive/caffeine A very basic REST service for JSON data - enough for prototyping and MVPs!
- ebosas/microservices A microservices example in Go
- iximiuz/client-go-examples Collection of mini-programs demonstrating Kubernetes client-go usage. If you’re writing controllers or any other form of automation on top of Kubernetes, this repository with Go examples might come in handy.
- Mathieu-Desrochers/Learning-Go Minimal working examples of Go’s unique features.
Dockerfile for go
Videos
Click to expand!
Tweets
Click to expand!
If I were a system administrator looking to learn a new programming language it would be Go.
— Kelsey Hightower (@kelseyhightower) December 7, 2020
So many of our tools including Kubernetes, Prometheus, and Terraform are written, and extended, in Go that it's almost a requirement next to learning Bash. https://t.co/OfZmGo4uP5
β¨ Freshly released: go-test-trace. Allows you to generate distributed trace spans from #golang test cases and can participate into an existing distributed trace. Useful to diagnose CI/CD or to run locally. https://t.co/ypLt3sg5MW pic.twitter.com/hGfNJUxi81
— Jaana Dogan γ€γ γγ¬γ³ (@rakyll) September 21, 2021
How I write HTTP services in #golang has changed over the years... here's my current style.
— Mat Ryer (@matryer) October 4, 2021
(Please consider sharing this with somebody you know who's learning Go.)
It's a yarn... π§Ά
1/13
Working with Kubernetes Objects in Go π½
— Ivan Velichko (@iximiuz) January 22, 2022
How data structures from our beloved YAML manifests are represented as Go structs and interfaces.
(a sneak peek from my work-in-progress article on k8s .io/api and k8s .io/apimachinery modules) pic.twitter.com/yLTP3riQOb
What is runtime.Scheme in Kubernetes Go code?
— Ivan Velichko (@iximiuz) January 24, 2022
I'd been confused by this concept for quite some time. Turns out - it's just a fancy object factory.
Scheme is a registry maintaining a mapping of Kinds (strings) to Types (structs).
Schemes are dynamic - new types can be appended. pic.twitter.com/7o3UYO1HH3