Blog Index – The Go Programming Language
Share your feedback about developing with Go,
Todd Kulesza, for the Go team
Help shape the future of Go by sharing your thoughts via the Go Developer Survey
Go Developer Survey 2021 Results,
Alice Merrick
An analysis of the results from the 2021 Go Developer Survey.
When To Use Generics,
Ian Lance Taylor
When to use generics when writing Go code, and when not to use them.
Get familiar with workspaces,
Beth Brown, for the Go team
Learn about Go workspaces and some of the workflows they enable.
How Go Mitigates Supply Chain Attacks,
Filippo Valsorda
Go tooling and design help mitigate supply chain attacks at various stages.
An Introduction To Generics,
Robert Griesemer and Ian Lance Taylor
An introduction to generics in Go.
Go 1.18 is released!,
The Go Team
Go 1.18 adds generics, native fuzzing, workspace mode, performance improvements, and more.
Announcing Go 1.18 Beta 2,
Jeremy Faller and Steve Francia, for the Go team
Go 1.18 Beta 2 is our second preview of Go 1.18. Please try it and let us know if you find problems.
Two New Tutorials for 1.18,
Katie Hockman, for the Go team
Two new tutorials have been published in preparation for the release of Go 1.18.
Go 1.18 Beta 1 is available, with generics,
Russ Cox, for the Go team
Go 1.18 Beta 1 is our first preview of Go 1.18. Please try it and let us know if you find problems.
Twelve Years of Go,
Russ Cox, for the Go team
Happy Birthday, Go!
A new search experience on pkg.go.dev,
Julie Qiu
Package search on pkg.go.dev has been updated, and you can now search for symbols!
Announcing the 2021 Go Developer Survey,
Alice Merrick
Please take the 2021 Go Developer Survey. We want to hear from you!
Code of Conduct Updates,
Carmen Andoh, Russ Cox, and Steve Francia
A small update to, and an update on enforcement of, the Go Code of Conduct
Automatic cipher suite ordering in crypto/tls,
Filippo Valsorda
Go 1.17 is making TLS configuration easier and safer by automating TLS cipher suite preference ordering.
Tidying up the Go web experience,
Russ Cox
Consolidating our web sites onto go.dev.
Go 1.17 is released,
Matt Pearring and Alex Rakoczy
Go 1.17 adds performance improvements, module optimizations, arm64 on Windows, and more.
The Go Collective on Stack Overflow,
Steve Francia
Announcing the Go Collective, a new experience for Go on Stack Overflow.
Fuzzing is Beta Ready,
Katie Hockman and Jay Conrod
Native Go fuzzing is now ready for beta testing on tip.
Go Developer Survey 2020 Results,
Alice Merrick
An analysis of the results from the 2020 Go Developer Survey.
Contexts and structs,
Jean de Klerk, Matt T. Proud
New module changes in Go 1.16,
Jay Conrod
Go 1.16 enables modules by default, provides a new way to install executables, and lets module authors retract published versions.
Go 1.16 is released,
Matt Pearring and Dmitri Shuralyov
Go 1.16 adds embedded files, Apple Silicon support, and more.
Gopls on by default in the VS Code Go extension,
Go tools team
Gopls, which provides IDE features for Go to many editors, is now used by default in VS Code Go.
Command PATH security in Go,
Russ Cox
How to decide if your programs are vulnerable to PATH problems, and what to do about it.
A Proposal for Adding Generics to Go,
Ian Lance Taylor
Generics is entering the language change proposal process
Go on ARM and Beyond,
Russ Cox
Go’s support for ARM64 and other architectures
Redirecting godoc.org requests to pkg.go.dev,
Julie Qiu
The plan for moving from godoc.org to pkg.go.dev.
Eleven Years of Go,
Russ Cox, for the Go team
Happy Birthday, Go!
Pkg.go.dev has a new look!,
Julie Qiu
Announcing a new user experience on pkg.go.dev.
Announcing the 2020 Go Developer Survey,
Alice Merrick
Please take the 2020 Go Developer Survey. We want to hear from you!
Go 1.15 is released,
Alex Rakoczy
Go 1.15 adds a new linker, X.509 changes, runtime improvements, compiler improvements, GOPROXY improvements, and more.
Keeping Your Modules Compatible,
Jean de Klerk and Jonathan Amsterdam
How to keep your modules compatible with prior minor/patch versions.
The Next Step for Generics,
Ian Lance Taylor and Robert Griesemer
An updated generics design draft, and a translation tool for experimentation
Pkg.go.dev is open source!,
Julie Qiu
The VS Code Go extension joins the Go project,
The Go team
Announcement of VS Code Go’s move to the Go project.
Go Developer Survey 2019 Results,
Todd Kulesza
An analysis of the results from the 2019 Go Developer Survey.
Go, the Go Community, and the Pandemic,
Carmen Andoh, Russ Cox, and Steve Francia
How the Go team is approaching the pandemic, what you can expect from us, and what you can do.
A new Go API for Protocol Buffers,
Joe Tsai, Damien Neil, and Herbie Ong
Announcing a major revision of the Go API for protocol buffers.
Go 1.14 is released,
Alex Rakoczy
Go 1.14 adds production-ready module support, faster defers, better goroutine preemption, and more.
Next steps for pkg.go.dev,
Julie Qiu
What the Go team is planning for pkg.go.dev in 2020.
Proposals for Go 1.15,
Robert Griesemer, for the Go team
For Go 1.15, we propose three minor language cleanup changes.
Announcing the 2019 Go Developer Survey,
Todd Kulesza
Please take the 2019 Go Developer Survey. We want to hear from you!
Go.dev: a new hub for Go developers,
Steve Francia and Julie Qiu
Announcing go.dev, which answers: who else is using Go, what do they use it for, and how can I find useful Go packages?
Go Turns 10,
Russ Cox, for the Go team
Happy 10th birthday, Go!
Go Modules: v2 and Beyond,
Jean de Klerk and Tyler Bui-Palsulich
How to release major version 2 of your module.
Working with Errors in Go 1.13,
Damien Neil and Jonathan Amsterdam
How to use the new Go 1.13 error interfaces and functions.
Publishing Go Modules,
Tyler Bui-Palsulich
How to write and publish modules for use as dependencies.
Go 1.13 is released,
Andrew Bonventre
Go 1.13 adds module authentication, new number literals, error wrapping, TLS 1.3 on by default, and more.
Module Mirror and Checksum Database Launched,
Katie Hockman
The Go module mirror and checksum database provide faster, verified downloads of your Go dependencies.
Migrating to Go Modules,
Jean de Klerk
How to use Go modules to manage your program’s dependencies.
Contributors Summit 2019,
Carmen Andoh and contributors
Reporting from the Go Contributor Summit at GopherCon 2019.
Experiment, Simplify, Ship,
Russ Cox
How we develop Go, a talk from GopherCon 2019.
Why Generics?,
Ian Lance Taylor
Why should we add generics to Go, and what might they look like?
Announcing The New Go Store,
Cassandra Salisbury
Unfortunately, the Go store is offline.
Next steps toward Go 2,
Robert Griesemer, for the Go team
What Go 2 language changes should we include in Go 1.14?
Go 2018 Survey Results,
Todd Kulesza, Steve Francia
What we learned from the December 2018 Go User Survey.
Debugging what you deploy in Go 1.12,
David Chase
Go 1.12 improves support for debugging optimized binaries.
Using Go Modules,
Tyler Bui-Palsulich and Eno Compton
An introduction to the basic operations needed to get started with Go modules.
The New Go Developer Network,
GoBridge Leadership Team
Announcing the Go Developer Network, a collection of Go user groups sharing best practices.
What’s new in the Go Cloud Development Kit,
The Go Cloud Development Kit team at Google
Recent changes to the Go Cloud Development Kit (Go CDK).
Go 1.12 is released,
Andrew Bonventre
Go 1.12 adds opt-in TLS 1.3, improved modules, and more.
Go Modules in 2019,
Russ Cox
What the Go team is planning for Go modules in 2019.
Go 2, here we come!,
Robert Griesemer
How Go 2 proposals will be evaluated, selected, and shipped.
Nine years of Go,
Steve Francia
Happy 9th birthday, Go!
Participate in the 2018 Go User Survey,
Ran Tao, Steve Francia
Please take the 2018 Go User Survey. We want to hear from you!
Announcing App Engine’s New Go 1.11 Runtime,
Eno Compton and Tyler Bui-Palsulich
Google Cloud is announcing a new Go 1.11 runtime for App Engine, with fewer limits on app structure.
Compile-time Dependency Injection With Go Cloud’s Wire,
Robert van Gent
How to use Wire, a dependency injection tool for Go.
Participate in the 2018 Go Company Questionnaire,
Ran Tao, Steve Francia
Please take the 2018 Go Company Questionnaire.
Go 2 Draft Designs,
Announcing the draft designs for the major Go 2 changes.
Go 1.11 is released,
Andrew Bonventre
Go 1.11 adds preliminary support for Go modules, WebAssembly, and more.
Portable Cloud Programming with Go Cloud,
Eno Compton and Cassandra Salisbury
Announcing Go Cloud, for portable cloud programming with Go.
Getting to Go: The Journey of Go’s Garbage Collector,
Rick Hudson
A technical talk about the structure and details of the new, low-latency Go garbage collector.
Updating the Go Code of Conduct,
Steve Francia
Revising the Go Code of Conduct.
Go’s New Brand,
Steve Francia
Go’s new look and logo (don’t worry, the mascot isn’t changing!).
A Proposal for Package Versioning in Go,
Russ Cox
Proposing official support for package versioning in Go, using Go modules.
Go 2017 Survey Results,
Steve Francia
What we learned from the December 2017 Go User Survey.
Go 1.10 is released,
Brad Fitzpatrick
Go 1.10 adds automatic caching of build & test results, and more.
Hello, 中国!,
Andrew Bonventre
The Go home page and binary downloads is now available in China, at https://golang.google.cn.
Participate in the 2017 Go User Survey,
Steve Francia
Please take the 2017 Go User Survey. We want to hear from you!
Eight years of Go,
Steve Francia
Happy 8th birthday, Go!
Community Outreach Working Group,
Steve Francia & Cassandra Salisbury
Announcing the Go Community Outreach Working Group (CWG).
Go 1.9 is released,
Francesc Campoy
Go 1.9 adds type aliases, bit intrinsics, optimizations, and more.
Contribution Workshop,
Steve Francia, Cassandra Salisbury, Matt Broberg, and Dmitri Shuralyov
The Go contributor workshop trained new contributors at GopherCon.
Contributors Summit,
Sam Whited
Reporting from the Go Contributor Summit at GopherCon 2017.
Toward Go 2,
Russ Cox
How we will all work together toward Go 2.
Introducing the Developer Experience Working Group,
The Developer Experience Working Group
Announcing the Developer eXperience Working Group (DXWG).
HTTP/2 Server Push,
Jaana Burcu Dogan and Tom Bergan
How to use HTTP/2 server push to reduce page load times.
Go 2016 Survey Results,
Steve Francia, for the Go team
What we learned from the December 2017 Go User Survey.
Go 1.8 is released,
Chris Broadfoot
Go 1.8 adds faster non-x86 compiled code, sub-millisecond garbage collection pauses, HTTP/2 push, and more.
Participate in the 2016 Go User Survey and Company Questionnaire,
Steve Francia
Please take the 2016 Go User Survey and Company Questionnaire. We want to hear from you!
Go fonts,
Nigel Tao, Chuck Bigelow, and Rob Pike
Announcing the Go font family, by Bigelow & Holmes.
Seven years of Go,
The Go Team
Happy 7th birthday, Go!
Introducing HTTP Tracing,
Jaana Burcu Dogan
How to use Go 1.7’s HTTP tracing to understand your client requests.
Using Subtests and Sub-benchmarks,
Marcel van Lohuizen
How to use Go 1.7’s new subtests and sub-benchmarks.
Smaller Go 1.7 binaries,
David Crawshaw
Go 1.7 includes some binary size reductions important for small devices.
Go 1.7 is released,
Chris Broadfoot
Go 1.7 adds faster x86 compiled code, context in the standard library, and more.
Go 1.6 is released,
Andrew Gerrand
Go 1.6 adds HTTP/2, template blocks, and more.
Language and Locale Matching in Go,
Marcel van Lohuizen
How to internationalize your web site with Go’s language and locale matching.
Six years of Go,
Andrew Gerrand
Happy 6th birthday, Go!
Golang UK 2015,
Francesc Campoy
Reporting from GolangUK 2015, the first London Go conference.
Go GC: Prioritizing low latency and simplicity,
Richard Hudson
Go 1.5 is the first step toward a new low-latency future for the Go garbage collector.
Go 1.5 is released,
Andrew Gerrand
Go 1.5 adds a new, much faster garbage collector, more parallelism by default, go tool trace, and more.
GopherCon 2015 Roundup,
Andrew Gerrand
Reporting from GopherCon 2015.
Go, Open Source, Community,
Russ Cox
Why is Go open source, and how can we strengthen our open-source community?
Qihoo 360 and Go,
Yang Zhou
How Qihoo 360 uses Go.
GopherChina Trip Report,
Robert Griesemer
Reporting from GopherChina 2015, the first Go conference in China.
Testable Examples in Go,
Andrew Gerrand
How to add examples, which double as tests, to your packages.
Package names,
Sameer Ajmani
How to name your packages.
Errors are values,
Rob Pike
Idioms and patterns for handling errors in Go.
GothamGo: gophers in the big apple,
Francesc Campoy
Reporting from GothamGo 2015, the first full-day Go conference in New York City.
The Gopher Gala is the first worldwide Go hackathon,
Francesc Campoy
The Gopher Gala, the first global Go hackathon, will take place January 23-25, 2015.
Generating code,
Rob Pike
How to use go generate.
Go 1.4 is released,
Andrew Gerrand
Go 1.4 adds support for Android, go generate, optimizations, and more.
Half a decade with Go,
Andrew Gerrand
Happy 5th birthday, Go!
Go at Google I/O and Gopher SummerFest,
Francesc Campoy
Reporting from Google I/O 2014 and the GoSF Go SummerFest.
Deploying Go servers with Docker,
Andrew Gerrand
How to use Docker’s new official base images for Go.
Constants,
Rob Pike
An introduction to constants in Go.
Go at OSCON,
Francesc Campoy
Reporting from OSCON 2014.
Go Concurrency Patterns: Context,
Sameer Ajmani
An introduction to the Go context package.
Go will be at OSCON 2014,
Francesc Campoy
If you will be at OSCON 2014, July 20-29 in Portland, Oregon, be sure to check out these Go talks.
Go 1.3 is released,
Andrew Gerrand
Go 1.3 adds better performance, static analysis in godoc, and more.
GopherCon 2014 Wrap Up,
Andrew Gerrand
Reporting from GopherCon 2014.
The Go Gopher,
Rob Pike and Andrew Gerrand
The backstory of the Go gopher.
Go Concurrency Patterns: Pipelines and cancellation,
Sameer Ajmani
How to use Go’s concurrency to build data-processing pipelines.
Go talks at FOSDEM 2014,
Andrew Gerrand
Reporting from the Go Devroom at FOSDEM 2014.
Go on App Engine: tools, tests, and concurrency,
Andrew Gerrand and Johan Euphrosine
Announcing improvements to Go on App Engine.
Inside the Go Playground,
Andrew Gerrand
How the Go playground works.
The cover story,
Rob Pike
Introducing Go 1.12’s code coverage tool.
Go 1.2 is released,
Andrew Gerrand
Go 1.2 adds test coverage results, goroutine preemption, and more.
Text normalization in Go,
Marcel van Lohuizen
How and why to normalize UTF-8 text in Go.
Four years of Go,
Andrew Gerrand
Happy 4th birthday, Go!
Strings, bytes, runes and characters in Go,
Rob Pike
How strings work in Go, and how to use them.
Arrays, slices (and strings): The mechanics of ‘append’,
Rob Pike
How Go arrays and slices work, and how to use copy and append.
The first Go program,
Andrew Gerrand
Rob Pike dug up the first Go program ever written.
Introducing the Go Race Detector,
Dmitry Vyukov and Andrew Gerrand
How and why to use the Go race detector to improve your programs.
Go and the Google Cloud Platform,
Andrew Gerrand
Two talks about using Go with the Google Cloud Platform, from Google I/O 2013.
A conversation with the Go team,
At Google I/O 2013, several members of the Go team hosted a “Fireside chat.”
Advanced Go Concurrency Patterns,
Andrew Gerrand
Watch Sameer Ajmani’s talk, “Advanced Go Concurrency Patterns,” from Google I/O 2013.
Go 1.1 is released,
Andrew Gerrand
Go 1.1 is faster, less picky about return statements, and adds method expressions.
The path to Go 1,
Andrew Gerrand
Watch Rob Pike and Andrew Gerrand’s talk, The Path to Go 1.
Two recent Go articles,
Andrew Gerrand
Two Go articles: “Go at Google: Language Design in the Service of Software Engineering” and “Getting Started with Go, App Engine and Google+ API”
Get thee to a Go meetup,
Andrew Gerrand
How to find or start a local group of gophers.
Go maps in action,
Andrew Gerrand
How and when to use Go maps.
go fmt your code,
Andrew Gerrand
How and why to format your Go code using gofmt.
Concurrency is not parallelism,
Andrew Gerrand
Watch Rob Pike’s talk, _Concurrency is not parallelism._
The App Engine SDK and workspaces (GOPATH),
Andrew Gerrand
App Engine SDK 1.7.4 adds support for GOPATH-style workspaces.
Two recent Go talks,
Andrew Gerrand
Two Go talks: “Go: A Simple Programming Environment” and “Go: Code That Grows With Grace”.
Go turns three,
Russ Cox
Happy 3rd birthday, Go!
Go updates in App Engine 1.7.1,
Andrew Gerrand
App Engine SDK 1.7.1 adds memcache and other functionality for Go.
Organizing Go code,
Andrew Gerrand
How to name and package the parts of your Go program to best serve your users.
Gccgo in GCC 4.7.1,
Ian Lance Taylor
GCC 4.7.1 adds support for Go 1.
Go videos from Google I/O 2012,
Andrew Gerrand
Talks about Go from Google I/O 2012.
Go version 1 is released,
Andrew Gerrand
A major milestone: announcing Go 1, the first stable version of Go.
Getting to know the Go community,
Andrew Gerrand
Please take a Gopher Survey. We want to hear from you!
Building StatHat with Go,
Patrick Crosby
How StatHat uses Go, and why they chose it.
From zero to Go: launching on the Google homepage in 24 hours,
Reinaldo Aguiar
How Go helped launch the Google Doodle for Thanksgiving 2011.
The Go Programming Language turns two,
Andrew Gerrand
Happy 2nd birthday, Go!
Writing scalable App Engine applications,
David Symonds
How to build scalable web applications using Go with Google App Engine.
Debugging Go programs with the GNU Debugger,
Andrew Gerrand
Announcing a new article about debugging Go programs with GDB.
Go App Engine SDK 1.5.5 released,
Andrew Gerrand
Go App Engine SDK 1.5.5 includes Go release.r60.2.
A preview of Go version 1,
Russ Cox
What the Go team is planning for Go version 1.
Learn Go from your browser,
Andrew Gerrand
Announcing the Go tour, https://tour.golang.org/.
The Go image/draw package,
Nigel Tao
An introduction to image compositing in Go using the image/draw package.
The Go image package,
Nigel Tao
An introduction to 2-D image processing with the Go image package.
The Laws of Reflection,
Rob Pike
How reflections works in Go, how to think about it, and how to use it.
Two Go Talks: “Lexical Scanning in Go” and “Cuddle: an App Engine Demo”,
Andrew Gerrand
Two talks about Go from the Sydney GTUG: Rob Pike explains lexical scanning, and Andrew Gerrand builds a simple real-time chat using App Engine.
Go for App Engine is now generally available,
Andrew Gerrand
You can use Go on App Engine now!
Error handling and Go,
Andrew Gerrand
An introduction to Go errors.
First Class Functions in Go,
Andrew Gerrand
Announcing a new Go codewalk, exploring first class functions.
Profiling Go Programs,
Russ Cox, July 2011; updated by Shenghou Ma, May 2013
How to use Go’s built-in profiler to understand and optimize your programs.
Spotlight on external Go libraries,
Andrew Gerrand
Some popular Go libraries and how to use them.
A GIF decoder: an exercise in Go interfaces,
Rob Pike
How Go’s interfaces work nicely in the Go GIF decoder.
Go at Google I/O 2011: videos,
Andrew Gerrand
Two talks about Go from Google I/O 2011.
Go and Google App Engine,
David Symonds, Nigel Tao, and Andrew Gerrand
Announcing support for Go in Google App Engine.
Go at Heroku,
Keith Rarick and Blake Mizerany
Two Heroku system engineers discuss their experiences using Go.
Introducing Gofix,
Russ Cox
How to use go fix to update your code with each new Go release.
Godoc: documenting Go code,
Andrew Gerrand
How and why to document your Go packages.
Gobs of data,
Rob Pike
Introducing gob, a high-speed Go-to-Go wire encoding format.
C? Go? Cgo!,
Andrew Gerrand
How to use cgo to let Go packages call C code.
Go becomes more stable,
Andrew Gerrand
Moving from weekly unstable Go releases toward less frequent, more stable ones.
JSON and Go,
Andrew Gerrand
How to generate and consume JSON-formatted data in Go.
Go Slices: usage and internals,
Andrew Gerrand
How to use Go slices, and how they work.
Go: one year ago today,
Andrew Gerrand
Happy 1st birthday, Go!
Debugging Go code (a status report),
Luuk van Dijk
What works and what doesn’t when debugging Go programs with GDB.
Real Go Projects: SmartTwitter and web.go,
Michael Hoisie
How Michael Hoisie used Go to build SmartTwitter and web.go.
Go Concurrency Patterns: Timing out, moving on,
Andrew Gerrand
How to implement timeouts using Go’s concurrency support.
Introducing the Go Playground,
Andrew Gerrand
Announcing the Go Playground, https://play.golang.org/.
Go Wins 2010 Bossie Award,
Andrew Gerrand
Go wins a 2010 Bossie Award for “best open source application development software.”
Defer, Panic, and Recover,
Andrew Gerrand
An introduction to the Go’s defer, panic, and recover control flow mechanisms.
Share Memory By Communicating,
Andrew Gerrand
A preview of the new Go codelab, Share Memory by Communicating.
Go’s Declaration Syntax,
Rob Pike
Why Go’s declaration syntax doesn’t look like, and is much simpler than, C’s.
Go Programming session video from Google I/O,
Andrew Gerrand
A talk by Rob Pike and Russ Cox about Go, from Google I/O 2010.
Go at I/O: Frequently Asked Questions,
Andrew Gerrand
Q&A about Go from Google I/O 2010.
Upcoming Google I/O Go Events,
Andrew Gerrand
If you will be at Google I/O 2010, be sure to catch up with the Go team at these events.
New Talk and Tutorials,
Andrew Gerrand
More materials for learning about Go: one talk, one codelab, and one screencast.
JSON-RPC: a tale of interfaces,
Andrew Gerrand
How to use the net/rpc package’s interfaces to create a JSON-RPC system.
Third-party libraries: goprotobuf and beyond,
Andrew Gerrand
Announcing Go support for Protocol Buffers, Google’s data interchange format.
Go: What’s New in March 2010,
Andrew Gerrand
First post!