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!