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

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

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

* **Go Design Patterns**
    * Author: Mario Castro Contreras
    * Publication Date: February 2017
    * ISBN: 978-1786466204
    * Reference: https://www.packtpub.com/application-development/go-design-patterns

* **Go Cookbook**
    * Author: Aaron Torres
    * Publication Date: June 2017
    * ISBN: 978-1783286836
    * Reference: https://www.packtpub.com/application-development/go-cookbook

* **Go: Design Patterns for Real-World Projects**
    * Authors: Vladimir Vivien, Mario Castro Contreras, Mat Ryer
    * Publication Date: June 2017
    * ISBN: 978-1788390552
    * Reference: https://www.packtpub.com/application-development/go-design-patterns-real-world-projects

* **Building Microservices with Go**
    * Author: Nic Jackson
    * Publication Date: July 2017
    * ISBN: 978-1786468666
    * Reference: https://www.packtpub.com/application-development/building-microservices-go

* **Concurrency in Go**
    * Author: Katherine Cox-Buday
    * Publication Date: August 2017
    * ISBN: 978-1491941195
    * Reference: http://shop.oreilly.com/product/0636920046189.do

* **Machine Learning With Go**
    * Author: Daniel Whitenack
    * Publication Date: September 2017
    * ISBN: 978-1785882104
    * Reference: https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-go

* **Go Systems Programming**
    * Author: Mihalis Tsoukalos
    * Publication Date: September 2017
    * ISBN: 978-1787125643
    * Reference: https://www.packtpub.com/networking-and-servers/go-systems-programming

* **Web Development with Go: Learn to Create Real World Web Applications using Go**
  * Author: Jonathan Calhoun
  * Publication Date: June 2017
  * ISBN: N/A (self published)
  * Reference: [http://usegolang.com](http://usegolang.com)

* **Learning Functional Programming in Go**
  * Author: Lex Sheehan
  * Publication Date: November 2017
  * ISBN: 978-1787281394
  * Reference: https://www.packtpub.com/application-development/learning-functional-programming-go

* **Cloud Native programming with Golang**
  * Author: Mina Andrawos, Martin Helmich
  * Publication Date: December 2017
  * ISBN: 978-1787125988
  * Reference: https://www.packtpub.com/application-development/cloud-native-programming-golang

* **Isomorphic Go**
  * Author: Kamesh Balasubramanian
  * Publication Date: December 2017
  * ISBN: 978-1788394185
  * Reference: 
    * https://www.packtpub.com/web-development/isomorphic-go
    * https://www.amazon.com/dp/1788394186

* **Security with Go**
  * Author: John Daniel Leon
  * Publication Date: January 2018
  * ISBN: 978-1788627917
  * Reference: https://www.amazon.com/dp/1788627911

* **Go Standard Library Cookbook**
  * Author: Radomir Sohlich
  * Publication Date: February 2018
  * ISBN: 9781788475273
  * Reference: https://www.amazon.com/dp/1788475275

* **Distributed Computing with Go**
   * Author: V.N. Nikhil Anurag
   * Publication Date: February 2018
   * ISBN: 9781787125384
   * Reference: https://www.amazon.com/dp/1787125386

 * **Go Web Development Cookbook**
    * Author: Arpit Aggarwal
    * Publication Date: April 2018
    * ISBN: 9781787286740
    * Reference: https://www.amazon.com/Web-Development-Cookbook-full-stack-applications/dp/1787286746

* **Mastering Go**
    * Author: Mihalis Tsoukalos
    * Publication Date: April 2018
    * ISBN: 9781788626545
    * Reference: https://www.amazon.com/Mastering-production-applications-concurrency-cloud-native/dp/1788626540

* **Echo Quick Start Guide**
    * Author: J. Ben Huson 
    * Publication Date: May 2018
    * ISBN: 9781789139433
    * Reference: https://www.amazon.com/dp/1789139430

* **Hands-On Serverless Applications with Go**
    * Author: Mohamed Labouardy
    * Publication Date: August 2018
    * ISBN: 9781789134612
    * Reference: https://www.packtpub.com/application-development/hands-serverless-applications-go

* **Hands-On Go Programming**
    * Author: Tarik Guney
    * Publication Date: August 2018
    * ISBN: 9781789531756
    * Reference: https://www.packtpub.com/application-development/hands-go-programming

* **Go Machine Learning Projects**
    * Author: Xuanyi Chew
    * Publication Date: November 2018
    * ISBN: 9781788993401
    * Reference: https://www.packtpub.com/big-data-and-business-intelligence/go-machine-learning-projects

* **Hands-On Dependency Injection in Go**
    * Author: Corey Scott
    * Publication Date: November 2018
    * ISBN: 9781789132762
    * Reference: https://www.packtpub.com/application-development/hands-dependency-injection-go

* **Hands-On Software Architecture with Golang**
    * Author: Jyotiswarup Raiturkar
    * Publication Date: December 2018
    * ISBN: 9781788622592
    * Reference: https://www.packtpub.com/application-development/hands-software-architecture-golang

* **Hands-On Fundamentals of Data Science with Go (Video)**
    * Author: Sanket Gupta
    * Publication Date: December 2018
    * ISBN: 9781789539103
    * Reference: https://www.packtpub.com/big-data-and-business-intelligence/hands-fundamentals-data-science-go-video

* **Building RESTful APIs with Go (Video)**
    * Author: Bartlomiej Walczak
    * Publication Date: December 2018
    * ISBN: 978178961499
    * Reference: https://www.packtpub.com/application-development/building-restful-apis-go-vide

## Early Access

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

  * **Get Programming with Go**
    * Author: Nathan Youngman, Roger Peppe
    * Publication Date: July 2018 (estimated)
    * ISBN: 9781617293092
    * Reference: [https://www.manning.com/books/get-programming-with-go](https://www.manning.com/books/get-programming-with-go?a_aid=nathany&a_bid=53f68821)

* **WebAssembly in Action**
    * Author:  Gerard Gallant 
    * Publication Date: Spring 2019 (estimated) 
    * ISBN: 9781617295744
    * Reference: https://www.manning.com/books/webassembly-in-action

## Pre-order

  * **Black Hat Go**
    * Author: Tom Steele, Chris Patten, and Dan Kottmann
    * Publication Date: March 2018
    * ISBN: 978-1-59327-865-6
    * Reference: https://www.nostarch.com/blackhatgo

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

  * **Go语言高级编程** (e-book)
    * Author: 柴树杉（chai2010）
    * Publication Date: ---
    * ISBN: ---
    * Reference: https://github.com/chai2010/advanced-go-programming-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/

# French
  * **Programmer en Go - Pourquoi ? Comment ?**
    * Author: Rudy Rigot
    * Publication Date: 24 Jan 2018
    * ISBN: 978-2-8227-0660-5
    * Reference: https://www.d-booker.fr/go-bases/499-programmer-en-go-pourquoi-comment.html

# 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 und Verteilte Programmierung mit Go** (3rd edition) (available as print and e-book)
    * Author: Christian Maurer
    * Publication Date: 2018-06
    * ISBN: 978-3-658-21152-3
    * Reference: https://www.springer.com/de/book/9783658211523

  * **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
  * **A Linguagem de Programação Go**
    * Author:  Alan A. A. Donovan, Brian W. Kernighan 
    * Publication Date: 2017
    * ISBN: 978-85-7522-546-2
    * Reference: https://novatec.com.br/livros/linguagem-de-programacao-go/

  * **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: June 2015
    * ISBN: 978-8-96618-990-8
    * Reference: http://www.pyrasis.com/private/2015/06/01/publish-go-for-the-really-impatient-book

  * **개발자를 위한 하룻밤에 읽는 Go 언어 이야기**
    * Author: 신제용
    * Publication Date: December 2015
    * ISBN: 978-8-96848-806-1
    * Reference: http://www.hanbit.co.kr/store/books/look.php?p_code=E8544486990

  * **디스커버리 Go 언어**
    * Author: 염재현
    * Publication Date: March 2016
    * ISBN: 9788-96848-268-7
    * Reference: http://www.hanbit.co.kr/store/books/look.php?p_code=B5279497767

  * **Go 언어 웹 프로그래밍 철저 입문**
    * Author: 장재휴
    * Publication Date: March 2016
    * ISBN: 979-1-18697-881-8
    * Reference: http://www.gilbut.co.kr/book/bookView.aspx?bookcode=BN001434

  * **Go 인 액션**
    * Authors: William Kennedy with Brian Ketelsen and Erik St. Martin; translated by Hyunhee Jang
    * Publication Date: June 2016
    * ISBN: 979-1-18589-053-1
    * Reference: http://jpub.tistory.com/585

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

  * **Go 웹 프로그래밍**
    * Author: Sau Sheong Chang; translated by Jinwook Jeong
    * Publication Date: March 2017
    * ISBN: 979-1-18669-731-3
    * Reference: http://www.bjpublic.co.kr/skin12/productSearchView.php?board_data=aWR4PTIxMyZzdGFydFBhZ2U9MCZsaXN0Tm89MzM

  * **프로젝트로 완성하는 Go 프로그래밍**
    * Author: Mat Ryer; translated by Soonbeom Kwon
    * Publication Date: August 2017
    * ISBN: 979-1-16175-032-3
    * Reference: http://www.acornpub.co.kr/book/go-blueprints-2

  * **Go 언어 실전 테크닉**
    * Authors: 松木雅幸, mattn, 藤原俊一郎, 中島大一, 牧 大輔, 鈴木健太; translated by Hyuntae Park
    * Publication Date: August 2017
    * ISBN: 979-1-16175-026-2
    * Reference: http://www.acornpub.co.kr/book/go-language-minna

  * **Go Cookbook**
    * Author: Aaron Torres; transalted by Sangsik Lee
    * Publication Date: December 2017
    * ISBN: 979-1-16175-088-0
    * Reference: http://www.acornpub.co.kr/book/go-cookbook

  * **Go 언어를 활용한 마이크로서비스 개발**
    * Author: Nic Jackson; translated by Sangsik Lee
    * Publication Date: July 2018
    * ISBN: 979-1-16175-190-0
    * Reference: http://www.acornpub.co.kr/book/microservices-go

  * **Go 언어 시작하기**
    * Author: 박혜영, 서정인
    * Publication Date: September 2018
    * ISBN: 979-1-15600-606-0
    * Reference: http://www.hongpub.co.kr/sub.php?goPage=view_product&flashpage=&Code=20180911072243

  * **Go 마스터하기**
    * Author: Mihalis Tsoukalos; translated by Kihyuk Nam
    * Publication Date: October 2018
    * ISBN: 979-1-16175-208-2
    * Reference: http://acornpub.co.kr/book/mastering-go

# 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://dasarpemrogramangolang.novalagung.com

# 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

# Polish

  * **Język Go. Poznaj i programuj**
    * Authors: Alan A. A. Donovan, Brian W. Kernighan; translated by Lech Lachowski
    * Publication Date: July 2016
    * ISBN: 978-83-283-2467-1
    * Reference: https://helion.pl/ksiazki/jezyk-go-poznaj-i-programuj-alan-a-a-donovan-brian-w-kernighan,jgopop.htm


# Looking for contributors

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

 * **Go Web Development Cookbook**
    * Author: Arpit Aggarwal
    * Publication Date: April 2018
    * ISBN: 9781787286740
    * Reference: https://www.amazon.in/Web-Development-Cookbook-full-stack-applications/dp/1787286746

***