Is your area not listed below? Check out [this list](http://golang.meetup.com/all/) of people from around the world that are interested in Go meetups.

# Africa
  * [Go Cape Town](http://www.meetup.com/gocapetown/) - Cape Town.
  * [golang-dakar](https://plus.google.com/u/0/communities/116552609416802012105) Dakar (Sénégal)
  * [angolang](https://plus.google.com/u/0/b/112645881964422842789/communities/111727796450195570970) Luanda, Angola

# Asia

  * [Golang China](http://groups.google.com/group/golang-china) - China.
  * [Golang JP](https://plus.google.com/communities/107075098212007233819) - Japan.
  * [GDG Korea Golang](https://plus.google.com/u/0/communities/115721275599816202991) - Korea.
  * [Golang VN](https://plus.google.com/communities/104475612935018972341) - Vietnam
  * [Golang Taiwan](http://golang.tw) - Taiwan.
  * [Golang India](https://plus.google.com/communities/102083447604771785504) - Bangalore, India.
  * [Golang Pune](https://plus.google.com/communities/103673348666338246281) - Pune, India.
  * [Golang Israel](http://www.meetup.com/Go-Israel) - Israel.
  * [Singapore Gophers](https://www.facebook.com/groups/golang.sg/) - Singapore.

# Europe

  * [Amsterdam, NL](http://www.meetup.com/golang-amsterdam/)
  * [Belarus](http://gophers.by/) - Belarus.
  * [GDG Berlin Golang](http://www.meetup.com/golang-users-berlin/) - Berlin, Germany.
  * [Go-User-Group-Hamburg](http://www.meetup.com/Go-User-Group-Hamburg) - Hamburg, Germany.
  * [Go Lithuania User Group](http://gophers.lt/) - Lithuania, Kaunas.
  * [Go London User Group](http://www.meetup.com/Go-London-User-Group/) - London, UK.
  * [Golang Москва](http://www.meetup.com/Golang-Moscow/) - Moscow, Russia.
  * [Golang Питер](http://www.meetup.com/Golang-Peter/) - Saint Petersburg, Russia.
  * [Munich Gophers](http://www.meetup.com/Munich-Gophers-Go-User-Group/) - Munich, Germany
  * [Golang Paris](http://www.meetup.com/Golang-Paris) - Paris, France.
  * [golang-pl](https://groups.google.com/forum/?fromgroups#!forum/golang-pl) - Poland.
  * [Gophers Katowice](http://www.meetup.com/Gophers-Katowice) - Katowice, Poland.
  * [Golang Warsaw](http://www.meetup.com/Golang-Warsaw) - Warsaw, Poland.
  * [Go-Stockholm](http://www.meetup.com/Go-Stockholm/) - Stockholm, Sweden.
  * [GolangIT](http://golangit.github.io/) - Italy.
  * [Go-Turkey](https://plus.google.com/communities/101920753066440157216) - Turkey.
  * [Go Graz](http://gograz.org) - Graz, Austria
  * [Meetup Lausanne](http://www.meetup.com/Lausanne-golang-Meetup) - Lausanne, Switzerland
  * [Meetup Zurich](http://www.meetup.com/Zurich-Gophers/) - Zurich, Switzerland
  * [Meetup Frankfurt](http://www.meetup.com/Frankfurt-Gophers-Meetup/) - Frankfurt am Main, Germany
  * [Go-ningen](http://www.meetup.com/Go-ningen/) - Groningen, The Netherlands
  * [Golang Ljubljana](http://www.meetup.com/Slovenian-Go-lang-User-Group/) - Ljubljana, Slovenia
  * [Go Euregio](https://plus.google.com/communities/116272759718686417490) - Maastricht, Netherlands; Liège/Hasselt, Belgium; Aachen, Germany

# North America

## Canada

  * [Edmonton Go Meetup](https://edmontongo.org/) - Edmonton AB, Canada.
  * [vangophers](http://groups.google.com/group/vangophers) - Vancouver BC, Canada.
  * [Go Vancouver](https://plus.google.com/u/0/communities/106063002572645508555) - Vancouver BC, Canada.
  * [GolangVan meetup](http://www.meetup.com/golangvan/) - Vancouver BC, Canada.
  * [GolangVan](http://golangvan.org/) - Vancouver BC, Canada.
  * [GoTO](http://www.meetup.com/go-toronto) - Toronto ON, Canada.
  * [Ottawa Go](http://www.meetup.com/Ottawa-Go-Meetup/) - Ottawa ON, Canada.

## Mexico

  * [golangmx](http://golang.mx/) - Mexico City, Mexico.
  * [Golang Monterrey](http://www.meetup.com/Golang-MTY/) - Monterrey, Mexico

## United States

  * [Los-Angeles-Gophers](http://www.meetup.com/Los-Angeles-Gophers/) - Los Angeles CA, USA.
  * [Golang Mountain View](http://www.meetup.com/Golang-Mountain-View/) - Mountain View CA, USA.
  * [OC Gophers](http://www.meetup.com/Orange-County-Gophers) - Orange County CA, USA.
  * [SDGophers](http://www.meetup.com/sdgophers/) — San Diego CA, USA
  * [GoSF](http://www.meetup.com/golangsf/) - San Francisco CA, USA.
  * [GoSV](http://www.meetup.com/GolangSV/) - San Mateo CA, USA.
  * [Denver Go Language User Group](http://www.meetup.com/Denver-Go-Language-User-Group/) - Denver CO, USA.
  * [Go-Miami](http://www.meetup.com/Go-Miami/) - Miami FL, USA.
  * [Go-Users-Group-Atlanta](http://www.meetup.com/Go-Users-Group-Atlanta/) - Atlanta GA, USA.
  * [chicagolang](http://groups.google.com/group/chicagolang) - Chicago IL, USA.
  * [Louisville Golang](http://www.meetup.com/Louisville-Golang-Meetup/) - Louisville KY, USA.
  * [Go Boston](https://plus.google.com/u/0/communities/103337146295481792015) - Boston MA, USA.
  * [GoMN](http://www.meetup.com/golangmn/) - Minneapolis MN, USA.
  * [NYC Go Developers Meetup](http://www.meetup.com/nycgolang/) - New York NY, USA.
  * [New York Go Language Meetup](http://www.meetup.com/golangny/) - New York NY, USA.
  * [GoPDX](http://groups.google.com/group/go-pdx) - Portland OR, USA.
  * [GoLangPhilly](http://www.meetup.com/GoLangPhilly/) - Philadelphia PA, USA.
  * [GoLancaster](http://www.meetup.com/GoLancaster/) - Lancaster PA, USA.
  * [ATX-Golang](http://www.meetup.com/atxgolang/) - Austin TX, USA.
  * [GoDFW](http://www.meetup.com/GoCowboys/) - Dallas TX, USA.
  * [Golang Houston](http://www.meetup.com/Golang-Houston/) - Houston TX, USA.
  * [Utah Gophers](http://www.meetup.com/utahgophers/) - Salt Lake City UT, USA.
  * [Golang-DC](http://www.meetup.com/Golang-DC/) - Arglinton VA, USA.
  * [Seattle Go Programmers](http://www.meetup.com/golang/) - Seattle WA, USA.
  * [Triangle Golang](http://www.meetup.com/Triangle-Golang-Meetup/) - Raleigh NC, USA.

# Oceania
  * [Canberra Gophers](https://plus.google.com/u/1/communities/114036877112593565975) - Canberra, Australia.
  * [golang-sydney](http://www.meetup.com/golang-syd/) - Sydney, Australia.
  * [golang-nz](http://groups.google.com/group/golang-nz) - New Zealand.
  * [Melbourne-Go-Nuts](http://www.meetup.com/Melbourne-Go-Nuts) - Melbourne, Australia.

# South America
  * [Golang Brasil](http://www.golangbr.org) - Brazil.
  * [Golang Buenos Aires](http://www.meetup.com/Golang-Meetup-Buenos-Aires) - Argentina.
  * [Golang Medellín](http://www.meetup.com/Golang-Medellin/) - Colombia.
  * [Golang Chile](https://groups.google.com/d/forum/golang-chile) - Chile.
  * [Golang Panamá](https://groups.google.com/d/forum/golang-panama) - Panamá.
  * [Golang Lima](http://www.meetup.com/es/Golang-Peru/) - Perú