The Go Blog
Go Developer Survey 2023 Q1 Results, 11 May 2023
An analysis of the results from the 2023 Q1 Go Developer Survey.
Code coverage for Go integration tests, 8 March 2023
Code coverage for integration tests, available in Go 1.20.
All your comparable types, 17 February 2023
type parameters, type sets, comparable types, constraint satisfaction
Profile-guided optimization preview, 8 February 2023
Introduction to profile-guided optimization, available as a preview in Go 1.20.
Go 1.20 is released!, 1 February 2023
Go 1.20 brings PGO, faster builds, and various tool, language, and library improvements.
Share your feedback about developing with Go, 18 January 2023
Help shape the future of Go by sharing your thoughts via the Go Developer Survey
Thirteen Years of Go, 10 November 2022
Happy Birthday, Go!
Go runtime: 4 years later, 26 September 2022
A check-in on the status of Go runtime development
Go Developer Survey 2022 Q2 Results, 8 September 2022
An analysis of the results from the 2022 Q2 Go Developer Survey.
Vulnerability Management for Go, 6 September 2022
Announcing vulnerability management for Go, to help developers learn about known vulnerabilities in their dependencies.
Go 1.19 is released!, 2 August 2022
Go 1.19 adds richer doc comments, performance improvements, and more.
Share your feedback about developing with Go, 1 June 2022
Help shape the future of Go by sharing your thoughts via the Go Developer Survey
Go Developer Survey 2021 Results, 19 April 2022
An analysis of the results from the 2021 Go Developer Survey.
When To Use Generics, 12 April 2022
When to use generics when writing Go code, and when not to use them.
Get familiar with workspaces, 5 April 2022
Learn about Go workspaces and some of the workflows they enable.
How Go Mitigates Supply Chain Attacks, 31 March 2022
Go tooling and design help mitigate supply chain attacks at various stages.
An Introduction To Generics, 22 March 2022
An introduction to generics in Go.
Go 1.18 is released!, 15 March 2022
Go 1.18 adds generics, native fuzzing, workspace mode, performance improvements, and more.
Announcing Go 1.18 Beta 2, 31 January 2022
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, 14 January 2022
Two new tutorials have been published in preparation for the release of Go 1.18.
Go 1.18 Beta 1 is available, with generics, 14 December 2021
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, 10 November 2021
Happy Birthday, Go!
A new search experience on pkg.go.dev, 9 November 2021
Package search on pkg.go.dev has been updated, and you can now search for symbols!
Announcing the 2021 Go Developer Survey, 26 October 2021
Please take the 2021 Go Developer Survey. We want to hear from you!
Code of Conduct Updates, 16 September 2021
A small update to, and an update on enforcement of, the Go Code of Conduct
Automatic cipher suite ordering in crypto/tls, 15 September 2021
Go 1.17 is making TLS configuration easier and safer by automating TLS cipher suite preference ordering.
Tidying up the Go web experience, 18 August 2021
Consolidating our web sites onto go.dev.
Go 1.17 is released, 16 August 2021
Go 1.17 adds performance improvements, module optimizations, arm64 on Windows, and more.
The Go Collective on Stack Overflow, 23 June 2021
Announcing the Go Collective, a new experience for Go on Stack Overflow.
Fuzzing is Beta Ready, 3 June 2021
Native Go fuzzing is now ready for beta testing on tip.
Go Developer Survey 2020 Results, 9 March 2021
An analysis of the results from the 2020 Go Developer Survey.
Contexts and structs, 24 February 2021
New module changes in Go 1.16, 18 February 2021
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, 16 February 2021
Go 1.16 adds embedded files, Apple Silicon support, and more.
Gopls on by default in the VS Code Go extension, 1 February 2021
Gopls, which provides IDE features for Go to many editors, is now used by default in VS Code Go.
Command PATH security in Go, 19 January 2021
How to decide if your programs are vulnerable to PATH problems, and what to do about it.
A Proposal for Adding Generics to Go, 12 January 2021
Generics is entering the language change proposal process
Go on ARM and Beyond, 17 December 2020
Go's support for ARM64 and other architectures
Redirecting godoc.org requests to pkg.go.dev, 15 December 2020
The plan for moving from godoc.org to pkg.go.dev.
Eleven Years of Go, 10 November 2020
Happy Birthday, Go!
Pkg.go.dev has a new look!, 10 November 2020
Announcing a new user experience on pkg.go.dev.
Announcing the 2020 Go Developer Survey, 20 October 2020
Please take the 2020 Go Developer Survey. We want to hear from you!
Go 1.15 is released, 11 August 2020
Go 1.15 adds a new linker, X.509 changes, runtime improvements, compiler improvements, GOPROXY improvements, and more.
Keeping Your Modules Compatible, 7 July 2020
How to keep your modules compatible with prior minor/patch versions.
The Next Step for Generics, 16 June 2020
An updated generics design draft, and a translation tool for experimentation
Pkg.go.dev is open source!, 15 June 2020
The VS Code Go extension joins the Go project, 9 June 2020
Announcement of VS Code Go’s move to the Go project.
Go Developer Survey 2019 Results, 20 April 2020
An analysis of the results from the 2019 Go Developer Survey.
Go, the Go Community, and the Pandemic, 25 March 2020
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, 2 March 2020
Announcing a major revision of the Go API for protocol buffers.
Go 1.14 is released, 25 February 2020
Go 1.14 adds production-ready module support, faster defers, better goroutine preemption, and more.
Next steps for pkg.go.dev, 31 January 2020
What the Go team is planning for pkg.go.dev in 2020.
Proposals for Go 1.15, 28 January 2020
For Go 1.15, we propose three minor language cleanup changes.
Announcing the 2019 Go Developer Survey, 20 November 2019
Please take the 2019 Go Developer Survey. We want to hear from you!
Go.dev: a new hub for Go developers, 13 November 2019
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, 8 November 2019
Happy 10th birthday, Go!
Go Modules: v2 and Beyond, 7 November 2019
How to release major version 2 of your module.
Working with Errors in Go 1.13, 17 October 2019
How to use the new Go 1.13 error interfaces and functions.
Publishing Go Modules, 26 September 2019
How to write and publish modules for use as dependencies.
Go 1.13 is released, 3 September 2019
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, 29 August 2019
The Go module mirror and checksum database provide faster, verified downloads of your Go dependencies.
Migrating to Go Modules, 21 August 2019
How to use Go modules to manage your program's dependencies.
Contributors Summit 2019, 15 August 2019
Reporting from the Go Contributor Summit at GopherCon 2019.
Experiment, Simplify, Ship, 1 August 2019
How we develop Go, a talk from GopherCon 2019.
Why Generics?, 31 July 2019
Why should we add generics to Go, and what might they look like?
Announcing The New Go Store, 18 July 2019
Unfortunately, the Go store is offline.
Next steps toward Go 2, 26 June 2019
What Go 2 language changes should we include in Go 1.14?
Go 2018 Survey Results, 28 March 2019
What we learned from the December 2018 Go User Survey.
Debugging what you deploy in Go 1.12, 21 March 2019
Go 1.12 improves support for debugging optimized binaries.
Using Go Modules, 19 March 2019
An introduction to the basic operations needed to get started with Go modules.
The New Go Developer Network, 14 March 2019
Announcing the Go Developer Network, a collection of Go user groups sharing best practices.
What's new in the Go Cloud Development Kit, 4 March 2019
Recent changes to the Go Cloud Development Kit (Go CDK).
Go 1.12 is released, 25 February 2019
Go 1.12 adds opt-in TLS 1.3, improved modules, and more.
Go Modules in 2019, 19 December 2018
What the Go team is planning for Go modules in 2019.
Go 2, here we come!, 29 November 2018
How Go 2 proposals will be evaluated, selected, and shipped.
Nine years of Go, 10 November 2018
Happy 9th birthday, Go!
Participate in the 2018 Go User Survey, 8 November 2018
Please take the 2018 Go User Survey. We want to hear from you!
Announcing App Engine’s New Go 1.11 Runtime, 16 October 2018
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, 9 October 2018
How to use Wire, a dependency injection tool for Go.
Participate in the 2018 Go Company Questionnaire, 4 October 2018
Please take the 2018 Go Company Questionnaire.
Go 2 Draft Designs, 28 August 2018
Announcing the draft designs for the major Go 2 changes.
Go 1.11 is released, 24 August 2018
Go 1.11 adds preliminary support for Go modules, WebAssembly, and more.
Portable Cloud Programming with Go Cloud, 24 July 2018
Announcing Go Cloud, for portable cloud programming with Go.
Getting to Go: The Journey of Go's Garbage Collector, 12 July 2018
A technical talk about the structure and details of the new, low-latency Go garbage collector.
Updating the Go Code of Conduct, 23 May 2018
Revising the Go Code of Conduct.
Go's New Brand, 26 April 2018
Go’s new look and logo (don't worry, the mascot isn’t changing!).
A Proposal for Package Versioning in Go, 26 March 2018
Proposing official support for package versioning in Go, using Go modules.
Go 2017 Survey Results, 26 February 2018
What we learned from the December 2017 Go User Survey.
Go 1.10 is released, 16 February 2018
Go 1.10 adds automatic caching of build & test results, and more.
Hello, 中国!, 22 January 2018
The Go home page and binary downloads is now available in China, at https://golang.google.cn.
Participate in the 2017 Go User Survey, 16 November 2017
Please take the 2017 Go User Survey. We want to hear from you!
Eight years of Go, 10 November 2017
Happy 8th birthday, Go!
Community Outreach Working Group, 5 September 2017
Announcing the Go Community Outreach Working Group (CWG).
Go 1.9 is released, 24 August 2017
Go 1.9 adds type aliases, bit intrinsics, optimizations, and more.
Contribution Workshop, 9 August 2017
The Go contributor workshop trained new contributors at GopherCon.
Contributors Summit, 3 August 2017
Reporting from the Go Contributor Summit at GopherCon 2017.
Toward Go 2, 13 July 2017
How we will all work together toward Go 2.
Introducing the Developer Experience Working Group, 10 April 2017
Announcing the Developer eXperience Working Group (DXWG).
HTTP/2 Server Push, 24 March 2017
How to use HTTP/2 server push to reduce page load times.
Go 2016 Survey Results, 6 March 2017
What we learned from the December 2017 Go User Survey.
Go 1.8 is released, 16 February 2017
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, 13 December 2016
Please take the 2016 Go User Survey and Company Questionnaire. We want to hear from you!
Go fonts, 16 November 2016
Announcing the Go font family, by Bigelow & Holmes.
Seven years of Go, 10 November 2016
Happy 7th birthday, Go!
Introducing HTTP Tracing, 4 October 2016
How to use Go 1.7's HTTP tracing to understand your client requests.
Using Subtests and Sub-benchmarks, 3 October 2016
How to use Go 1.7's new subtests and sub-benchmarks.
Smaller Go 1.7 binaries, 18 August 2016
Go 1.7 includes some binary size reductions important for small devices.
Go 1.7 is released, 15 August 2016
Go 1.7 adds faster x86 compiled code, context in the standard library, and more.
Go 1.6 is released, 17 February 2016
Go 1.6 adds HTTP/2, template blocks, and more.
Language and Locale Matching in Go, 9 February 2016
How to internationalize your web site with Go's language and locale matching.
Six years of Go, 10 November 2015
Happy 6th birthday, Go!
Golang UK 2015, 9 October 2015
Reporting from GolangUK 2015, the first London Go conference.
Go GC: Prioritizing low latency and simplicity, 31 August 2015
Go 1.5 is the first step toward a new low-latency future for the Go garbage collector.
Go 1.5 is released, 19 August 2015
Go 1.5 adds a new, much faster garbage collector, more parallelism by default, go tool trace, and more.
GopherCon 2015 Roundup, 28 July 2015
Reporting from GopherCon 2015.
Go, Open Source, Community, 8 July 2015
Why is Go open source, and how can we strengthen our open-source community?
Qihoo 360 and Go, 6 July 2015
How Qihoo 360 uses Go.
GopherChina Trip Report, 1 July 2015
Reporting from GopherChina 2015, the first Go conference in China.
Testable Examples in Go, 7 May 2015
How to add examples, which double as tests, to your packages.
Package names, 4 February 2015
How to name your packages.
Errors are values, 12 January 2015
Idioms and patterns for handling errors in Go.
GothamGo: gophers in the big apple, 9 January 2015
Reporting from GothamGo 2015, the first full-day Go conference in New York City.
The Gopher Gala is the first worldwide Go hackathon, 7 January 2015
The Gopher Gala, the first global Go hackathon, will take place January 23-25, 2015.
Generating code, 22 December 2014
How to use go generate.
Go 1.4 is released, 10 December 2014
Go 1.4 adds support for Android, go generate, optimizations, and more.
Half a decade with Go, 10 November 2014
Happy 5th birthday, Go!
Go at Google I/O and Gopher SummerFest, 6 October 2014
Reporting from Google I/O 2014 and the GoSF Go SummerFest.
Deploying Go servers with Docker, 26 September 2014
How to use Docker's new official base images for Go.
Constants, 25 August 2014
An introduction to constants in Go.
Go at OSCON, 20 August 2014
Reporting from OSCON 2014.
Go Concurrency Patterns: Context, 29 July 2014
An introduction to the Go context package.
Go will be at OSCON 2014, 15 July 2014
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, 18 June 2014
Go 1.3 adds better performance, static analysis in godoc, and more.
GopherCon 2014 Wrap Up, 28 May 2014
Reporting from GopherCon 2014.
The Go Gopher, 24 March 2014
The backstory of the Go gopher.
Go Concurrency Patterns: Pipelines and cancellation, 13 March 2014
How to use Go's concurrency to build data-processing pipelines.
Go talks at FOSDEM 2014, 24 February 2014
Reporting from the Go Devroom at FOSDEM 2014.
Go on App Engine: tools, tests, and concurrency, 13 December 2013
Announcing improvements to Go on App Engine.
Inside the Go Playground, 12 December 2013
How the Go playground works.
The cover story, 2 December 2013
Introducing Go 1.12's code coverage tool.
Go 1.2 is released, 1 December 2013
Go 1.2 adds test coverage results, goroutine preemption, and more.
Text normalization in Go, 26 November 2013
How and why to normalize UTF-8 text in Go.
Four years of Go, 10 November 2013
Happy 4th birthday, Go!
Strings, bytes, runes and characters in Go, 23 October 2013
How strings work in Go, and how to use them.
Arrays, slices (and strings): The mechanics of 'append', 26 September 2013
How Go arrays and slices work, and how to use copy and append.
The first Go program, 18 July 2013
Rob Pike dug up the first Go program ever written.
Introducing the Go Race Detector, 26 June 2013
How and why to use the Go race detector to improve your programs.
Go and the Google Cloud Platform, 12 June 2013
Two talks about using Go with the Google Cloud Platform, from Google I/O 2013.
A conversation with the Go team, 6 June 2013
At Google I/O 2013, several members of the Go team hosted a "Fireside chat."
Advanced Go Concurrency Patterns, 23 May 2013
Watch Sameer Ajmani's talk, “Advanced Go Concurrency Patterns,” from Google I/O 2013.
Go 1.1 is released, 13 May 2013
Go 1.1 is faster, less picky about return statements, and adds method expressions.
The path to Go 1, 14 March 2013
Watch Rob Pike and Andrew Gerrand's talk, The Path to Go 1.
Two recent Go articles, 6 March 2013
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, 27 February 2013
How to find or start a local group of gophers.
Go maps in action, 6 February 2013
How and when to use Go maps.
go fmt your code, 23 January 2013
How and why to format your Go code using gofmt.
Concurrency is not parallelism, 16 January 2013
Watch Rob Pike's talk, _Concurrency is not parallelism._
The App Engine SDK and workspaces (GOPATH), 9 January 2013
App Engine SDK 1.7.4 adds support for GOPATH-style workspaces.
Two recent Go talks, 2 January 2013
Two Go talks: “Go: A Simple Programming Environment” and “Go: Code That Grows With Grace”.
Go turns three, 10 November 2012
Happy 3rd birthday, Go!
Go updates in App Engine 1.7.1, 22 August 2012
App Engine SDK 1.7.1 adds memcache and other functionality for Go.
Organizing Go code, 16 August 2012
How to name and package the parts of your Go program to best serve your users.
Gccgo in GCC 4.7.1, 11 July 2012
GCC 4.7.1 adds support for Go 1.
Go videos from Google I/O 2012, 2 July 2012
Talks about Go from Google I/O 2012.
Go version 1 is released, 28 March 2012
A major milestone: announcing Go 1, the first stable version of Go.
Getting to know the Go community, 21 December 2011
Please take a Gopher Survey. We want to hear from you!
Building StatHat with Go, 19 December 2011
How StatHat uses Go, and why they chose it.
From zero to Go: launching on the Google homepage in 24 hours, 13 December 2011
How Go helped launch the Google Doodle for Thanksgiving 2011.
The Go Programming Language turns two, 10 November 2011
Happy 2nd birthday, Go!
Writing scalable App Engine applications, 1 November 2011
How to build scalable web applications using Go with Google App Engine.
Debugging Go programs with the GNU Debugger, 30 October 2011
Announcing a new article about debugging Go programs with GDB.
Go App Engine SDK 1.5.5 released, 11 October 2011
Go App Engine SDK 1.5.5 includes Go release.r60.2.
A preview of Go version 1, 5 October 2011
What the Go team is planning for Go version 1.
Learn Go from your browser, 4 October 2011
Announcing the Go tour, https://tour.golang.org/.
The Go image/draw package, 29 September 2011
An introduction to image compositing in Go using the image/draw package.
The Go image package, 21 September 2011
An introduction to 2-D image processing with the Go image package.
The Laws of Reflection, 6 September 2011
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", 1 September 2011
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, 21 July 2011
You can use Go on App Engine now!
Error handling and Go, 12 July 2011
An introduction to Go errors.
First Class Functions in Go, 30 June 2011
Announcing a new Go codewalk, exploring first class functions.
Profiling Go Programs, 24 June 2011
How to use Go's built-in profiler to understand and optimize your programs.
Spotlight on external Go libraries, 3 June 2011
Some popular Go libraries and how to use them.
A GIF decoder: an exercise in Go interfaces, 25 May 2011
How Go's interfaces work nicely in the Go GIF decoder.
Go at Google I/O 2011: videos, 23 May 2011
Two talks about Go from Google I/O 2011.
Go and Google App Engine, 10 May 2011
Announcing support for Go in Google App Engine.
Go at Heroku, 21 April 2011
Two Heroku system engineers discuss their experiences using Go.
Introducing Gofix, 15 April 2011
How to use go fix to update your code with each new Go release.
Godoc: documenting Go code, 31 March 2011
How and why to document your Go packages.
Gobs of data, 24 March 2011
Introducing gob, a high-speed Go-to-Go wire encoding format.
C? Go? Cgo!, 17 March 2011
How to use cgo to let Go packages call C code.
Go becomes more stable, 16 March 2011
Moving from weekly unstable Go releases toward less frequent, more stable ones.
JSON and Go, 25 January 2011
How to generate and consume JSON-formatted data in Go.
Go Slices: usage and internals, 5 January 2011
How to use Go slices, and how they work.
Go: one year ago today, 10 November 2010
Happy 1st birthday, Go!
Debugging Go code (a status report), 2 November 2010
What works and what doesn't when debugging Go programs with GDB.
Real Go Projects: SmartTwitter and web.go, 19 October 2010
How Michael Hoisie used Go to build SmartTwitter and web.go.
Go Concurrency Patterns: Timing out, moving on, 23 September 2010
How to implement timeouts using Go's concurrency support.
Introducing the Go Playground, 15 September 2010
Announcing the Go Playground, https://play.golang.org/.
Go Wins 2010 Bossie Award, 6 September 2010
Go wins a 2010 Bossie Award for “best open source application development software.”
Defer, Panic, and Recover, 4 August 2010
An introduction to the Go's defer, panic, and recover control flow mechanisms.
Share Memory By Communicating, 13 July 2010
A preview of the new Go codelab, Share Memory by Communicating.
Go's Declaration Syntax, 7 July 2010
Why Go's declaration syntax doesn't look like, and is much simpler than, C's.
Go Programming session video from Google I/O, 6 June 2010
A talk by Rob Pike and Russ Cox about Go, from Google I/O 2010.
Go at I/O: Frequently Asked Questions, 27 May 2010
Q&A about Go from Google I/O 2010.
Upcoming Google I/O Go Events, 12 May 2010
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, 5 May 2010
More materials for learning about Go: one talk, one codelab, and one screencast.
JSON-RPC: a tale of interfaces, 27 April 2010
How to use the net/rpc package's interfaces to create a JSON-RPC system.
Third-party libraries: goprotobuf and beyond, 20 April 2010
Announcing Go support for Protocol Buffers, Google's data interchange format.
Go: What's New in March 2010, 18 March 2010