A set of blogs dedicated to Go.

NOTE: Please don't add individual blog entries to this page. Those belong in [articles](Articles) instead.

## English

* [The official Go Blog](https://blog.golang.org) - For in depth posts by the Go team
* [Gopher Academy Blog](http://blog.gopheracademy.com/)
* [Dave Cheney's Blog](http://dave.cheney.net)
  * [Dave Cheney's Resources for Go Programmers](http://dave.cheney.net/resources-for-new-go-programmers)
* [spf13's Go Blog](http://spf13.com/post/)
* [Katrina Owen's Blog](http://whipperstacker.com/)
* [Mat Ryer's Medium Blog](https://medium.com/@matryer)
* [Matt Aimonetti's Blog](http://matt.aimonetti.net/)
* [Marcio.io](http://marcio.io/)
* [Carlos Becker's Blog](http://carlosbecker.com/)
* [Ardan Studios Going Go](http://www.goinggo.net/)
* [The Golang Weekly](http://golangweekly.com/)
* [Alex Edward's Golang Posts](http://www.alexedwards.net/blog/category/golang)
* [GoLang Tutorials](http://golangtutorials.blogspot.com/)
* [Mathias Lafeldt's Blog](https://mlafeldt.github.io/)
* [Marcelo Magallon's Blog](http://blog.ksub.org/bytes/)
* [Mina Andrawos's Golang Posts](http://www.minaandrawos.com/category/golang-2/)
* [Aliaksandr Pliutau's Golang Blog](http://pliutau.com/)
* [Johan Brandhorst's Golang Blog](https://jbrandhorst.com)
* [Christoph Berger's Applied Go Blog](https://appliedgo.net)
* [Jon Calhoun's Blog](https://www.calhoun.io/)
* [Inanc Gumus's Learn Go Programming Blog](https://blog.learngoprogramming.com)
* [Elliot Forbes - TutorialEdge.net Golang Tutorials](https://tutorialedge.net/course/golang/)

## Portuguese

* [Eduardo Nunes Pereira](https://medium.com/@eduardonunespereira)
* [Gopher Brasil](http://gopher.net.br)

## Spanish
* [Golang Argentina](https://golang.com.ar)

## Chinese
* [虞双齐的博客-Golang](https://yushuangqi.com/tags/golang.html)