Everybody has their own list, I get it!, I guess this is just mine or it was initially (I do accept PR's).
Priceless
- Gopherize Me
π - Go in 100 Seconds
β³
History
Run examples
- The Go Play Space
- Better Go Playground
- The Go Playground
- The Gotip Playground
- Playground v3 implementation
Go community
- Go Developer Survey 2020 Results
- Go Forum
- Gophers Slack
- Gophers Discord
- Go Language Collective - Stack Overflow
- Go Developers Network (GDN)
- Go Conferences and Major Events
- Gophercon
- golang-nuts mailing list
- The Go Blog
- Go Community Code of Conduct
- Frequently Asked Questions (FAQ)
Blogs/Channels
- Go Walkthrough
- Dave Cheney
- Gopher Academy
- Skills Matter
- Failing Forward
- JustForFunc
- Gopher Academy
- The Go Programming Language
- GopherData
- Learn To Code
- Go Ahead
- Sourcegraph
- Golangbot
- GopherVids
- Learn Go Programming
- Applied Go
- golangspec
- Phil Pearl
- Alex Edwards
- Bitfield Consulting
Conferences (video recordings)
- GopherCon
- dotConferences
- Golang UK Conference
- GopherCon India
- GothamGo
- GopherCon Russia
- GopherCon Singapore
- GopherCon Brasil
Gophers
Books
- Network Automation with Go: A book about automating network operations and building applications using the Go programming language
- Awesome Go Books
- An Introduction to Programming in Go
- The Little Go Book
- Go Bootcamp
- Essential Go
- Go Internals: A work-in-progress book about the internals of the Go (1.10+) programming language.
- Go 101: An online-book focusing on Go syntax/semantics and all kinds of runtime related things (Go 1.17 ready) by Tapir Liu.
- The Go Programming Language
- Go in Action
- The Ultimate Go Notebook
- Go in Practice
Tools
IDE
- Visual Studio Code
- Go with Visual Studio Code
- Golang Guide: A List of Top Golang Frameworks, IDEs & Tools
- Font: FiraCode
- GoLand
Interpreters
Training
Beginner
- Getting Started: Learning Resources from Go's Get Started web page.
- Play with Go: Hands-on, interactive guides for programming in Go.
- Go on Exercism: Access to 128 exercises grouped into 26 Go Concepts, with automatic analysis of your code and personal mentoring, all 100% free.
- Introduction to Go: Youtube playlist by Failing Forward.
- Go Language Basics, PDF: Go class taught at Google and Microsoft around the globe by John Doak.
- Go by Example: Hands-on introduction to Go using annotated example programs by Mark McGranaghan and Eli Bendersky.
- A Tour of Go: A tour of the Go programming language by the Go team.
- Learn Go with tests: Explore the Go language by writing tests by Chris James.
- Go language course: Red Hat's Go language course in Go present format.
- learn-golang.org: Interactive Go tutorial.
- cosmiclearn.com: Space themed Go tutorial.
- golangbot.com: Go tutorial series.
- An Introduction to Go: by Francesc Campoy Flores (2019).
- Go 101: An online-book focusing on Go syntax/semantics and all kinds of runtime related things (Go 1.17 ready) by Tapir Liu.
- Go Tooling in Action: by Francesc Campoy Flores (2016).
- Go cheatsheet
- Go vs. Python: Syntax side-by-side.
Intermediate
- High Performence Go Workshop: by Dave Cheney.
- Practical Go Workshop: by Dave Cheney (2019).
- Gophercises: Free course to build roughly 20 different mini-applications, packages, and tools that are each designed to teach you something different by Jon Calhoun.
- Go Training Class Material: by ArdanLabs.
- Ultimate Go Programming - Video
- Algorithms to Go
- 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
- Go Proverbs
- Building Go from Source
- awesome-golang-leetcode
More links
- Resources for new Go programmers: by Dave Cheney.
- A Gopher's Reading List: Reading list of blog posts about Go, by Eno Compton.
- Go Training Important Reading: To complement Ardan Labs' material, by William Kennedy.
- Awesome Go Education: A curated list of awesome articles and resources for learning and practicing Go and its related technologies.
- Go Wiki: A collection of information about the Go Programming Language, by the Go team.
- Awesome Go: A curated list of awesome Go frameworks, libraries and software
- Go talks: Talks by the Go team, last updated 2019.
- Go Articles: Official articles index, by the Go team.
Why Go?
- Go at Google: Language Design in the Service of Software Engineering
- The Why of Go
- Five things that make Go fast
- The beauty of Go
- Why Go is my favorite programming language
- A Million WebSockets and Go
- Golang and why it matters
- Why Golang is great for network services
- The Robustness of Go, recording
- From X To Go
- One Program Written in Python, Go, and Rust
- A comparison of three programming languages for a full-fledged next-generation sequencing tool
Why not Go?
Writing Go code
- How to Write Go Code
- Go Patterns
- Idiomatic Go
- How to avoid Go gotchas
- Effective Go
- Ten commandments of Go
- SOLID Go Design
- Workshop: Practical Go - GoSG Meetup
- Go-Design-Patterns
- Writing high-performance Go code
- Comparison operators in Go
- Go best practices, six years in
- How to ship production-grade Go
- Idiomatic Go
- Nice benefits of named return values
- Go Examples of Common Patterns
- GoDS (Go Data Structures)
- go-algorithms
- Go app template build environment
- Collection of style guides for Go
- Clean Go Code
- Go Code Search
Package structure
- Style guideline for Go packages
- Naming
- Package names
- Organizing Go code
- Everything you need to know about Packages in Go
- Writing Go Applications with Reusable Logic
- Structuring Applications in Go
- Standard Package Layout
- Aspects of a good Go library
- Practical Advice for Go Library Authors
- Gophers, please tag your releases
- Writing Beautiful Packages in Go
Features
Channels
- Understanding Channels, Video
- Curious Channels
- Communicating Sequential Processes
- Communicating Sequential Goroutines
Concurrency
- Go Concurrency Patterns
- Concurrency Is Not Parallelism
- Simulating a real-world system in Go
- "go test -race" Under the Hood
- Understanding Channels
- Concurrency Patterns In Go
- Go Concurrency Patterns: Pipelines and cancellation
- Concurrent API Patterns in Go
Context
- The Context Package
- Implementing the context package
- Some context on context
- How to correctly use context.Context in Go 1.7
- Context - Go Training
- Context propagation over HTTP in Go
- Using contexts to avoid leaking goroutines
- Context use and misuse
- Context and Cancellation of goroutines
- Context Package Semantics In Go
Defer
- Go Defer Simplified with Practical Visuals
- 5 Gotchas of Defer in GoβββPart I
- 5 More Gotchas of Defer in GoβββPart II
- 5 More Gotchas of Defer in GoβββPart III
Dockerfiles
- Docker official Go repository
- Docker Alpine
- "Distroless" Docker Images
- Dockerize Go Applications
- Creating optimised Docker Images using Multi-Stage Builds
- Lean Go Containers with Multi-Stage Dockerfiles
- Multi-Stage Docker Builds for Creating Tiny Go Images
- Use multi-stage builds
- Golang: Donβt afraid of makefiles
Encoding
Errors
- Stack traces and the errors package
- Donβt just check errors, handle them gracefully, Video
- Go Lift
- Programming with errors
Garbage Collector
Github or Gerrit?
gRPC
- Building High Performance APIs In Go Using gRPC And Protocol Buffers
- gRPC: Google's high-performance, open-source RPC framework
- grpc: From Tutorial to Production
- gRPC Go: Beyond the basics
- Practical guide to securing gRPC connections with Go and TLS - Part 1
- Practical guide to securing gRPC connections with Go and TLS - Part2
Interfaces
- Introduction to Go, part 13: Interfaces
- Important interfaces that every Go developer should know
- Streaming IO in Go
- Intro++ to Go Interfaces
- Hacking Go Interfaces
- understanding the interface
- Methods, Interfaces and Embedded Types in Go
- Exploring Readers and Writers
- How To Use Go Interfaces
I/O model
Modules
- The Principles of Versioning in Go
- Using Go Modules
- Migrating to Go Modules
- Publishing Go Modules
- Go Modules in 2019
- Go 1.11 Modules
- Modules Part 01: Why And What
- Modules Part 02: Projects, Dependencies and Gopls
- Package Management With Go Modules: The Pragmatic Guide
- Taking Go modules for a spin
- Go Modules and Major Versions
Protobuf
Reflection
Security
Slices
Slides
- Package present
- Inside the "present" tool
- How Do I Create A Presentation Using Go?
- Go presentation tool
Templates
Testing
Web
Networking
- Gotchas in the Go Network Packages Defaults: Timeouts, HTTP Response Bodies, HTTP/1.x Keep-alives, net.IP is Mutable, etc.
- cidranger: Fast IP to CIDR lookup for Go.
- GeoIP2 Reader for Go: IP address geolocation.
- IPLib: Library built around and on top of the address primitives found in the net package to bring Python's ipaddress and Ruby's ipaddr capabilities to Go.
Network Device interaction
- vSSH: Library to handle tens of thousands SSH connections and execute the command(s) with higher-level API for building network device / server automation.
- netrasp: Package that communicates to network devices over SSH.
- scrapligo: Connecting to devices, specifically network devices (routers/switches/firewalls/etc.) via SSH and NETCONF.
- Commando: Tiny tool that enables users to collect command outputs from a single or a multiple networking devices defined in an inventory file.
- go-netconf: Simple NETCONF client based on RFC6241 and RFC6242.
- NETCONF client: Adapted Network Configuration Protocol (NETCONF) client from previous implementations.
- Gornir: Pluggable framework with inventory management to help operate collections of devices. It's similar to Nornir but in Go.
Network simulation/emulation
- Containerlab: Provides a CLI for orchestrating and managing container-based networking labs.
- cisshgo: Simple, small, fast, concurrent SSH server to emulate network equipment (i.e. Cisco IOS) for testing purposes.
Network Monitoring
- thola: A tool for monitoring and provisioning network devices written in Go.
- GoSNMP: SNMP client.
- tflow2: In memory NETFLOW version 9, IPFIX and SFlow analyzer.
- GoFlow: Cloudflare's NetFlow/IPFIX/sFlow collector in Go.
- GoFlow2: Fork of Cloudflare's GoFlow.
- Telegraf Cisco MDT plugin: Input plugin that consumes telemetry data from Cisco IOS XR, IOS XE and NX-OS platforms.
- Panoptes Streaming: Cloud native distributed streaming network telemetry.
- GoPacket: Packet decoding capabilities for Go.
- tcpterm: Visualize packets in TUI.
- cloud-bandwidth: Measure bandwidth to distributed endpoints across networks and clouds.
Network Performance
- Ethr: Cross platform network performance measurement tool.
- Arachne: A packet loss detection system and an underperforming path detection system.
Network YANG
Network gRPC
- gRPC library for Cisco IOS XR: Minimalistic library to interact with IOS XR devices using the gRPC framework.
- gNxI: A collection of tools for Network Management that use the gNMI and gNOI protocols.
- gNMIc: gNMI CLI client that provides full support for Capabilities, Get, Set and Subscribe RPCs with collector capabilities.
- gNOIc: gNOI CLI client that provides support for gNOI Certificate Managment, File and System Services.
- gNMI Gateway: Distributed and highly available service for connecting to multiple gNMI targets.
Network Routing protocols
- GoBGP: Open source BGP implementation designed from scratch for modern environment.
- bio-rd: A re-implementation of BGP, IS-IS and OSPF in Go.
Network Security
- bettercap: Powerful, easily extensible and portable framework written in Go which aims to offer to security researchers, red teamers and reverse engineers an easy to use, all-in-one solution with all the features they might possibly need for performing reconnaissance and attacking WiFi networks, Bluetooth Low Energy devices, wireless HID devices and Ethernet networks.
- Furious IP/Port Scanner: Fast, lightweight, portable network scanner.
- Network Flight Simulator: Lightweight utility used to generate malicious network traffic and help security teams to evaluate security controls and network visibility. The tool performs tests to simulate DNS tunneling, DGA traffic, requests to known active C2 destinations, and other suspicious traffic patterns.
- NETwork CAPture: The Netcap framework efficiently converts a stream of network packets into platform neutral type-safe structured audit records that represent specific protocols or custom abstractions.
Network vendor libraries
- Acigo: Go package for interacting with Cisco ACI using API calls.
- aci-go-client: golang client SDK to interact with CISCO APIC using REST API calls. This SDK is used by terraform-provider-aci.
- merakictl: Command line tool for interfacing with the Meraki Dashboard API.
- go-ciscoasa: A Cisco ASA API client enabling Go programs to interact with a Cisco ASA in a simple and uniform way.
- Arista Go eAPI Library: Native Go implementation for programming Arista EOS network devices using Go.
- Arista Go library.
- go-junos: A Go package that interacts with Junos devices, as well as Junos Space.
Network talks/guides/sessions
- Writing Network Drivers in Go: Bachelorβs Thesis.
- Implementing a Network Protocol in Go: A very detailed walkthrough of implementing a networking protocol (NDP in IPv6) in Go, with many, many code snippets.
- Packet Capture, Analysis, and Injection with Go: Gophercon presentation.
- Networking and Go: An Engineer's Journey: DigitalOcean's Networking team use of Go.
- gRPC and GPB for Networking Engineers: GPB and gRPC testing.