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

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

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

***