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/

  * **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

  * **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

## Early Access

  * **Go In Action**
    * Authors: William Kennedy with Brian Ketelsen and Erik St. Martin
    * Publication Date: October 2015
    * ISBN: 9781617291784
    * Reference: http://www.goinactionbook.com
    * Discount Code (44% off): goiaucf

  * **Go Web Programming**
    * Author: Sau Sheong Chang
    * Publication Date: Fall 2015 (est.)
    * ISBN: 9781617292569
    * Reference: http://manning.com/chang/

  * **Go in Practice**
    * Authors: Matt Butcher and Matt Farina
    * Publication Date: Fall 2015 (est.)
    * ISBN: 9781633430075
    * Reference: http://manning.com/butcher/

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

  * **Microservices in Go**
    * Authors: Matthew Campbell
    * Publication Date: Fall 2015 (est.)
    * ISBN: ---
    * Reference: http://microservicesingo.com/

## Pre-order

  * **Go: Up and Running**
    * Author: Alan Harris
    * Publication Date: August 2015 (est.)
    * ISBN: 978-1-4493-7025-1
    * Reference: http://shop.oreilly.com/product/0636920030638.do

  * **The Go Programming Language (Addison-Wesley Professional Computing Series)**
    * Author: Brian W. Kernighan & Alan Donovan
    * Publication Date: October 23, 2015
    * ISBN: 978-0134190440
    * Reference: http://www.informit.com/store/go-programming-language-9780134190440

## 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: http://gokyle.org/book/

  * **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

# 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语言程序设计 (21世纪高等学校规划教材·计算机科学与技术)**
    * Author: 王鹏
    * Publication Date: 2013-12-18
    * ISBN: 9787302347231
    * Reference: http://www.tup.com.cn/sub_press/4/book/Showbook.asp?CPBH=054436-01
  
  * **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:

# 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/3449/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/

#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 Espalol!**
    * Author: Nacho Pacheco
    * Publication Date: 2015-03-22
    * ISBN: ---
    * Reference: https://www.gitbook.com/book/nachopacheco/go-es/