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 User Group](http://www.meetup.com/Go-Cape-Town-User-Group) - Cape Town.
  * [golang-dakar](https://plus.google.com/u/0/communities/116552609416802012105) Dakar (Sénégal)

# 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/)
  * [golang-users-berlin](http://www.meetup.com/golang-users-berlin/) - Berlin, Germany.
  * [Got-go](http://www.meetup.com/Got-go/) - Gothenburg, Sweden.
  * [Go-User-Group-Hamburg](http://www.meetup.com/Go-User-Group-Hamburg) - Hamburg, Germany.
  * [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.
  * [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.

## Mexico

  * [golangmx](http://golang.mx/) - Mexico City, 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.
  * [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.
  * [Davidson Golang](http://www.meetup.com/Davidson-Golang/events/167980892/) - Davidson NC, 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.
  * [Go Steel Programmers](http://meetup.go-steel-programmers.org/) - Pittsburgh PA, USA.
  * [ATX-Golang](http://www.meetup.com/atxgolang/) - Austin TX, USA.
  * [GoDFW](http://www.meetup.com/GoCowboys/) - Dallas 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
  * [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.
  * https://plus.google.com/u/1/communities/114036877112593565975 - Canberra, Australia.

# South America
  * [Golang Brasil](http://www.golangbr.org) - Brazil.
  * [Golang Buenos Aires] (http://www.meetup.com/Golang-Meetup-Buenos-Aires) - Argentina.