Go is an open-source programming language, with a syntax loosely derived from C. It's statically typed, with limited dynamic typing capabilities; it also features automatic memory management, built-in concurrency primitives, variable-length arrays – called slices –, and a large standard library.
Go (sometimes "Golang" for search-ability) is a general-purpose programming language. While originally created by Google, Go is an open source project with a large contributor base. It aims to be efficient both for development and execution with a focus on fast compilation and increased maintainability of large projects. Go was originally targeted at systems programming tasks such as building server/web applications, high throughput middleware, and databases, but it has a growing ecosystem of libraries allowing it to be used for a wide variety of tasks such as developing end-user daemons, CLIs, and desktop/mobile applications.
The first class concurrency mechanisms of Go make it easier to write programs that get the most out of multicore and networked machines, while its structural type system enables flexible and modular program construction. Go compiles quickly to memory safe machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that develops like a dynamically typed, interpreted language, but performs like native code.
Go Reference Documentation
Go Tutorials
- A Tour of Go
- Golang Tutorials
- Effective Go
- Go Playground
- An Introduction to programming in Go
- Network programming with Go
- Go by Example
- Learn X in Y minutes - Go
- Go Style Guide
- GopherVids
- A Quick Guide to Go's Assembler
- Going Go Programming
- Go Talks (online slides)
- 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
- Golang Tutorial Series
- Golang Data Structure and Algorithms
Go Books (Paid)
- The Go Programming Language
- Programming in Go: Creating Applications for the 21st Century
- Go in Action
- The Go Programming Language Phrasebook
- The Way To Go: A Thorough Introduction To The Go Programming Language
- Go Programming
- Mastering Concurrency in Go
- Go Programming Blueprints
- Web Development with Go Building Scalable Web Apps and RESTful Services
- Mastering Go Web Services
- Level Up Your Web Apps With Go
- Introducing Go Build Reliable, Scalable Programs
- Go Design Patterns
- Go Systems Programming
- Go Web Scraping Quick Start Guide
Go Books (Free)
- An Introduction to Programming in Go (online)
- Go by Example (online)
- build web application with Golang (online)
- Learning Go HTML version / Source
Popular Go Projects
- List of projects / Libraries / Tools / Examples
- GoDoc - Documentation of many public Go Libs
- awesome-go - A curated list of awesome Go frameworks, libraries and software
Go Mailing Lists
Go chat
- Go chatroom on chat.stackoverflow.com
#go-nuts
on http://freenode.net
Online Go Compilers
- Go Playground (Official)
- Go Tip Playground (Official, runs tip which includes unpublished features. This functionality is also available in the main Playground by selecting "Go dev branch" from the drop-down menu)
- Ideone
- Compile-Online
Go FAQ
Go Code Editors & IDEs
Go Dependency Management
- Go modules (part of go tool chain since Go 1.11)
- Dep (deprecated)
- Glide (deprecated)
Go2 Resources
Go2 is an umbrella term used to indicate language changes under discussion that may break Go's compatibility promise. Even if a feature ends up being suited for a Go 1.x release, it is still often tagged and referred to as Go2. This includes proposals, draft specifications, dev implementations, etc.