Other book lists:

* [Go Books](https://github.com/dariubs/GoBooks)
* [Go Language Resources](http://go-lang.cat-v.org/books)

Sorted by publication date. 

# English
  * **Go Programming**
    * Author: John P. Baugh
    * Publication Date: June 16, 2010
    * ISBN: 978-1453636671

  * **The Way to Go: A Thorough Introduction to the Go Programming Language**
    * Author: Ivo Balbaert
    * Publication Date: March 7, 2012
    * ISBN: 978-1469769165

  * **The Go Programming Language Phrasebook**
    * Author: David Chisnall
    * Publication Date: April 30, 2012
    * ISBN: 978-0321817143
    * Reference: http://www.informit.com/store/go-programming-language-phrasebook-9780321817143

  * **Programming in Go: Creating Applications for the 21st Century**
    * Author: Mark Summerfield
    * Publication Date: May 4, 2012
    * ISBN: 978-0321774637
    * Reference: http://www.informit.com/store/programming-in-go-creating-applications-for-the-21st-9780321774637

  * **An Introduction to Programming in Go**
    * Author: Caleb Doxsey
    * Publication Date: September 3, 2012
    * ISBN: 978-1478355823
    * Reference: http://www.golang-book.com/

  * **Go Bootcamp: Everything you need to get started with Go (FREE)**
    * Author: Matt Aimonetti
    * Publication Date: March 2014
    * ISBN: none: free ebook/PDF/online version
    * Reference: http://www.golangbootcamp.com/

  * **Mastering Concurrency in Go**
    * Author: Nathan Kozyra
    * Publication Date: July 23, 2014
    * ISBN: 978-1783983483
    * Reference: https://www.packtpub.com/application-development/mastering-concurrency-go

  * **The Little Go Book**
    * Author: Karl Seguin
    * Publication Date: October 2014
    * ISBN: none: free ebook/PDF/online version
    * Reference: http://openmymind.net/The-Little-Go-Book/
    
  * **Go Programming Blueprints**
    * Author: Mat Ryer
    * Publication Date: January 23, 2015
    * ISBN: 978-1783988020
    * Reference: https://www.packtpub.com/application-development/go-programming-blueprints

  * **Level Up Your Web Apps With Go**
    * Author: Mal Curtis
    * Publication Date: April, 2015
    * ISBN: 978-0992461294
    * Reference: https://learnable.com/books/level-up-your-web-apps-with-go

  * **Mastering Go Web Services**
    * Author: Nathan Kozyra
    * Publication Date: April, 2015
    * ISBN: 9781783981304
    * Reference: https://www.packtpub.com/web-development/mastering-go-web-services

  * **Go In Action**
    * Authors: William Kennedy with Brian Ketelsen and Erik St. Martin
    * Publication Date: November, 2015
    * ISBN: 9781617291784
    * Reference: https://www.manning.com/books/go-in-action
    * Discount Code (44% off): goiaucf

  * **The Go Programming Language (Addison-Wesley Professional Computing Series)**
    * Author: Alan A.A. Donovan and Brian Kernighan
    * Publication Date: November, 2015
    * ISBN: 978-0134190440
    * Reference: http://www.gopl.io/

* **Web Development with Go: Building Scalable Web Apps and RESTful Services**
    * Author: Shiju Varghese
    * Publication Date: December, 2015
    * ISBN: 978-1484210536
    * Reference: http://www.apress.com/9781484210536

* **Write webapps in Go without using a framework** (Free e-book)
    * Author: Suraj Patil
    * Publication Date: October 2016
    * ISBN: NA since book is self published on http://leanpub.com
    * References: https://github.com/thewhitetulip/web-dev-golang-anti-textbook, https://leanpub.com/antitextbookGo/

* **Learning Go Web Development**
    * Author: Nathan Kozyra
    * Publication Date: April, 2016
    * ISBN: 978-1785282317
    * Reference: https://www.packtpub.com/web-development/learning-go-web-development

* **Go Web Programming**
    * Author: Sau Sheong Chang
    * Publication Date: July 22, 2016
    * ISBN: 9781617292569
    * Reference: http://manning.com/chang/

* **Go in Practice**
    * Authors: Matt Butcher and Matt Farina
    * Publication Date: October 1, 2016
    * ISBN: 9781633430075
    * Reference: http://manning.com/butcher/

* **Go Programming Blueprints - Second Edition**
    * Author: Mat Ryer
    * Publication Date: October 2016
    * ISBN: 978-1786468949
    * Reference: https://www.packtpub.com/application-development/go-programming-blueprints-second-edition

* **Learning Go programming**
    * Author: Vladimir Vivien
    * Publication Date: October 2016
    * ISBN: 978-1784395438
    * Reference: https://www.packtpub.com/application-development/learning-go-programming

* **Go Recipes**
    * Author: Shiju Varghese
    * Publication Date: November 2016
    * ISBN: 978-1-4842-1188-5
    * Reference: http://www.apress.com/us/book/9781484211892

## Early Access

  * **A Comprehensive Guide to Go Programming**
    * Authors: Baiju Muthukadan
    * Publication Date: June 10, 2015
    * ISBN: ---
    * Reference: http://golang.muthukadan.net/

  * **Learn Go**
    * Author: Nathan Youngman
    * Publication Date: Spring 2016 (estimated)
    * ISBN: 9781617293092
    * Reference: [https://www.manning.com/books/learn-go](https://manning.com/books/learn-go?a_aid=nathany&a_bid=53f68821)

  * **Web Development with Go: Learn to Create Real World Web Applications using Go**
    * Author: Jonathan Calhoun
    * Publication Date: Winter 2016 (estimated)
    * ISBN: --
    * Reference: [http://usegolang.com](http://usegolang.com)

## Pre-order

  * **Introducing Go**
    * Author: Caleb Doxsey
    * Publication Date: January 2016
    * ISBN: 978-1491941959
    * Reference: http://shop.oreilly.com/product/0636920046516.do

## Available without Publication Date

  * **Learning Go** (e-book)
    * Author: Miek Gieben
    * Publication Date: ---
    * ISBN: ---
    * Reference: http://archive.miek.nl/projects/learninggo/

  * **Network Programming with Go** (e-book)
    * Author: Jan Newmarch
    * Publication Date: ---
    * ISBN: ---
    * References: http://jan.newmarch.name/go/

  * **Go Bootcamp** (e-book)
    * Author: Matt Aimonetti
    * Publication Date: ---
    * ISBN: ---
    * References: http://www.golangbootcamp.com/

  * **A Go Developer's Notebook** (e-book)
    * Author: Eleanor McHugh
    * Publication Date: ---
    * ISBN: ---
    * References: https://leanpub.com/GoNotebook

  * **Go, The Standard Library** (e-book)
    * Author: Daniel Huckstep
    * Publication Date: ---
    * ISBN: ---
    * References: http://thestandardlibrary.com/go.html

  * **Practical Cryptography with Go** (e-book)
    * Author: Kyle Isom
    * Publication Date: ---
    * ISBN: ---
    * References: https://leanpub.com/gocrypto

  * **The Ultimate Guide to Building Database-Driven Apps with Go** (e-book)
    * Author: Baron Schwartz
    * Publication Date: ---
    * ISBN: ---
    * References: https://vividcortex.com/resources/building-database-driven-apps-with-go/

  * **Building Web Apps with Go** (e-book)
    * Author: Jeremy Saenz
    * Publication Date: ---
    * ISBN: ---
    * References: https://www.gitbook.com/book/codegangsta/building-web-apps-with-go/details

  * **How do I Write and Deploy Simple Web Apps with Go?** (e-book)
    * Author: Satish Talim
    * Publication Date: ---
    * ISBN: ---
    * References: https://leanpub.com/howdoibuildawebappwithgo

  * **Test-driven development with Go** (e-book)
    * Author: Yigal Duppen
    * Publication Date: ---
    * ISBN: ---
    * References: https://leanpub.com/golang-tdd

  * **Learn Go** (e-book)
    * Author: Gyu-ho Lee
    * Publication Date: ---
    * ISBN: ---
    * References: https://github.com/gyuho/learn#contents

  * **Learn Golang the Hard Way** (e-book)
    * Author: Laszlo Csontos
    * Publication Date: ---
    * ISBN: ---
    * References: http://www.learngolangthehardway.org/


## Cancelled or Status Indeterminable

  * **Microservices in Go**
    * Authors: Matthew Campbell
    * Publication Date: Fall 2015 (est.)
    * ISBN: ---
    * Reference: http://microservicesingo.com/
    * Status: [Cancelled per O'Reilly Employee](http://support.oreilly.com/oreilly/topics/availability-of-microservices-in-go-use-go-to-build-scalable-backends-by-matthew-campbell)

# Chinese
  * **Go语言·云动力**
    * Author: 樊虹剑（fango）
    * Publication Date: 2012-06
    * ISBN: 978-7-115-28307-8
    * Reference: http://www.ituring.com.cn/book/1040

  * **Go语言编程**
    * Author: 许式伟
    * Publication Date: 2012-08
    * ISBN: 978-7-115-29036-6
    * Reference: http://www.ituring.com.cn/book/967

  * **Go Web编程**
    * Author: 谢孟军
    * Publication Date: 2013-05
    * ISBN: 9787121200915
    * Reference: https://github.com/astaxie/build-web-application-with-golang/

  * **Go语言程序设计 (Programming in Go: Creating Applications for the 21st Century)**
    * Author: Mark Summerfield
    * Translator: 许式伟, 吕桂华, 徐立, 何李石
    * Publication Date: 2013-08
    * ISBN: 978-7-115-31790-2
    * Reference: http://www.ptpress.com.cn/Book.aspx?id=35714

  * **Go并发编程实战**
    * Author: 郝林
    * Publication Date: 2015-01-01
    * ISBN: 9787115373984
    * Reference: http://www.ptpress.com.cn/Book.aspx?id=39783

  * **学习 Go 语言** (e-book / Translation)
    * Author: Xing Xing (mikespook)
    * Publication Date: ---
    * ISBN: ---
    * Reference: http://www.mikespook.com/learning-go/

  * **Go 学习笔记 - 第四版** (e-book)
    * Author: 雨痕（qyuhen）
    * Publication Date: ---
    * ISBN: ---
    * Reference: https://github.com/qyuhen/book

# Japanese
  * **はじめての「Go言語」**
    * Author: 茨木 隆彰
    * Publication Date: 2010-11
    * ISBN: 978-4777515592
    * Reference:

  * **Go言語プログラミング入門on Google App Engine**
    * Author: 横山 隆司
    * Publication Date: 2011-12
    * ISBN: 978-4798031804
    * Reference:

  * **はじめてのGoogle App Engine Go言語編**
    * Author: 茨木 隆彰
    * Publication Date: 2012-2
    * ISBN: 978-4777516605
    * Reference:

  * **プログラミング言語Goフレーズブック**
    * Author: David Chisnall (著), デイビッド・チズナール (著), 柴田 芳樹 (翻訳)
    * Publication Date: 2012-10
    * ISBN: 978-4864010962
    * Reference:

  * **基礎からわかる Go言語**
    * Author: 古川 昇
    * Publication Date: 2012-11
    * ISBN: 978-4863541177
    * Reference:

  * **Go言語によるWebアプリケーション開発**
    * Author: Mat Ryer (著)、鵜飼 文敏 (監訳)、牧野 聡 (訳)
    * Publication Date: 2016-01
    * ISBN: 978-4-87311-752-2
    * Reference: http://www.oreilly.co.jp/books/9784873117522/

  * **プログラミング言語Go**
    * Authors: Alan A. A. Donovan, Brian W. Kernighan; translated by Yoshiki Shibata
    * Publication Date: 20 June 2016
    * ISBN: 978-4-62130-025-1
    * Reference: http://www.gopl.io/translations.html

  * **みんなのGo言語**
    * Authors: 松木雅幸, mattn, 藤原俊一郎, 中島大一, 牧 大輔, 鈴木健太
    * Publication Date: 9 Sep 2016
    * ISBN: 978-4774183923
    * Reference: http://www.amazon.co.jp/exec/obidos/ASIN/477418392X/

# German
  * **Programmierung in Google Go** (not available for buying any more)
    * Authors: Rainer Feike and Steffen Blass
    * Publication Date: 2010-11
    * ISBN: 978-3-8632-4722-5
    * Reference (Amazon): http://www.amazon.de/Programmierung-Google-Beispiele-professionelle-Anwendung/dp/3827330092
    * Reference (Google Books): https://books.google.de/books?id=E4IL5dT1yLsC&printsec=frontcover&hl=de#v=onepage&q&f=false

  * **Systemprogrammierung in Google Go**
    * Author: Frank Müller
    * Publication Date: 2011-01
    * ISBN: 978-3-89864-712-0
    * Reference: http://dpunkt.de/buecher/3762/-systemprogrammierung-in-google-go.html

  * **Nichtsequentielle Programmierung mit Go 1** (2nd edition) (available as print and e-book)
    * Author: Christian Maurer
    * Publication Date: 2012
    * ISBN: 978-3-642-29968-1
    * Reference: http://www.springer.com/computer/swe/book/978-3-642-29968-1

  * **Einstieg in Google Go** (e-book)
    * Author: Christian Himpel and Mario Deilmann
    * Publication Date: 2012-04
    * ISBN: 978-3-86802-415-9
    * Reference: http://entwickler.de/press/Einstieg-in-Google-Go

# Brazilian Portuguese
  * **Programando em Go: crie aplicações com a linguagem do Google**
    * Author: Caio Filipini
    * Publication Date: 2014-07-01
    * ISBN: 978-85-66250-49-7
    * Reference: http://www.casadocodigo.com.br/products/livro-google-go

# Russian
  * **Программирование на языке Go**
    * Author: Марк Саммерфильд
    * Publication Date: 2013-02-14
    * ISBN: 978-5-94074-854-0
    * Reference: http://dmkpress.com/catalog/computer/programming/978-5-94074-854-0/

  * **Язык программирования Go**
    * Author: Алан А. А. Донован, Брайан У. Керниган
    * Publication Date: 2016-04-21
    * ISBN: 978-5-8459-2051-5
    * Reference: http://www.williamspublishing.com/Books/978-5-8459-2051-5.html

  * **Go на практике**
    * Author: Батчер М., Фарина М.
    * Publication Date: 2017-01
    * ISBN: 978-5-97060-477-9
    * Reference: http://dmkpress.com/catalog/computer/programming/978-5-97060-477-9/

#Español
  * **Aprende Go en Y minutos**
    * Author: Nacho Pacheco
    * Publication Date: 2015-02-24
    * ISBN: ---
    * Reference: https://www.gitbook.com/book/nachopacheco/aprende-go-en-y-minutos/

  * **Constr­uyendo­ aplic­acione­s Web ­con Go**
    * Author: Nacho Pacheco
    * Publication Date: 2015-02-18
    * ISBN: ---
    * Reference: https://www.gitbook.com/book/nachopacheco/cawg/

  * **¡Go en Español!**
    * Author: Nacho Pacheco
    * Publication Date: 2015-03-22
    * ISBN: ---
    * Reference: https://www.gitbook.com/book/nachopacheco/go-es/

# Korean
  * **가장 빨리 만나는 Go 언어**
    * Author: 이재홍
    * Publication Date: 2015-06-01
    * ISBN: 978-8-96618-990-8
    * Reference: http://www.pyrasis.com/private/2015/06/01/publish-go-for-the-really-impatient-book

  * **The Go Programming Language**
    * Authors: Alan A. A. Donovan, Brian W. Kernighan; translated by Seung Lee
    * Publication Date: June 2016
    * ISBN: 978-0-13419-044-0
    * Reference: http://www.acornpub.co.kr/book/go-programming

# Indonesian
  * **Bahasa Pemrograman Go**
    * Author: Sajarwo Anggai
    * Publication Date: October 21, 2013
    * ISBN: ---
    * Reference: https://sajarwo87.wordpress.com/2013/10/21/buku-bahasa-pemrograman-go/

  * **Dasar Pemrograman Golang**
    * Author: Noval Agung Prayogo
    * Publication Date: Oktober 30, 2015
    * ISBN: ---
    * Reference: https://www.gitbook.com/book/novalagung/dasarpemrogramangolang/

# Italian
  * **Programmare in Linguaggio Go**
    * Author: Renato Mite
    * Publication Date: 9 Oct 2016
    * ISBN: ---
    * Reference (Amazon): https://www.amazon.it/dp/B01M2URIVX
    * Reference (Google Books): https://play.google.com/store/books/details/Renato_Mite_Programmare_in_Linguaggio_Go?id=4Ag6DQAAQBAJ
    * Reference (Kobo Books): https://store.kobobooks.com/it-it/ebook/programmare-in-linguaggio-go
    * Repository: https://github.com/rmite/gobook

# Looking for contributors

[Add Go books here that are looking for writers, editors, Gopher illustrators, and translators.]