Go by Example #
Go is an open-source programming language designed for building scalable, secure, and reliable software. Please read the official documentation to learn more.
Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below.
Unless stated otherwise, the examples here assume the latest major release Go and may use new language features. If something isn’t working, try upgrading to the latest version.
- Hello World
- Values
- Variables
- Constants
- For
- Arrays
- Atomic Counters
- Base64 Encoding
- Channel Buffering
- Channel Directions
- Channel Synchronization
- Channels
- Closing Channels
- Closures
- Command Line Arguments
- Command Line Flags
- Command Line Subcommands
- Context
- Custom Errors
- Defer
- Directories
- Embed Directive
- Enums
- Environment Variables
- Epoch
- Errors
- Execing Processes
- Exit
- File Paths
- Functions
- Generics
- Goroutines
- HTTP Client
- HTTP Server
- If Else
- Interfaces
- JSON
- Line Filters
- Logging
- Maps
- Methods
- Multiple Return Values
- Mutexes
- Non Blocking Channel Operations
- Number Parsing
- Panic
- Pointers
- Random Numbers
- Range Over Built in Types
- Range Over Channels
- Range Over Iterators
- Rate Limiting
- Reading Files
- Recover
- Recursion
- Regular Expressions
- Select
- Sha256 Hashes
- Signals
- Slices
- Sorting by Functions
- Sorting
- Spawning Processes
- Stateful Goroutines
- String Formatting
- String Functions
- Strings and Runes
- Struct Embedding
- Structs
- Switch
- Temporary Files and Directories
- Testing and Benchmarking
- Text Templates
- Tickers
- Time Formatting Parsing
- Time
- Timeouts
- Timers
- URL Parsing
- Variadic Functions
- Waitgroups
- Worker Pools
- Writing Files
- Xml
FAQ #
I found a problem with the examples; what do I do? #
We’re very happy to fix problem reports and accept contributions! Please submit
an issue or send a Pull Request.
See CONTRIBUTING.md
for more details.
What version of Go is required to run these examples? #
Given Go’s strong backwards compatibility guarantees, we expect the vast majority of examples to work on the latest released version of Go as well as many older releases going back years.
That said, some examples show off new features added in recent releases; therefore, it’s recommended to try running examples with the latest officially released Go version (see Go’s release history for details).
I’m getting output in a different order from the example. Is the example wrong? #
Some of the examples demonstrate concurrent code which has a non-deterministic execution order. It depends on how the Go runtime schedules its goroutines and may vary by operating system, CPU architecture, or even Go version.
Similarly, examples that iterate over maps may produce items in a different order from what you’re getting on your machine. This is because the order of iteration over maps in Go is not specified and is not guaranteed to be the same from one iteration to the next.
It doesn’t mean anything is wrong with the example. Typically the code in these examples will be insensitive to the actual order of the output; if the code is sensitive to the order - that’s probably a bug - so feel free to report it.