Announcing The New Go Store
18 Jul 2019

Cassandra Salisbury

* Introduction

*October*1,*2019,*Update:* _The_Go_Store_is_currently_offline._
_We_are_sorry_for_any_inconvenience._
_We_will_update_this_post_with_any_status_changes._

We are excited to launch the new [[https://go-store.io][Go official swag and merch store]] shipping worldwide.
We are even more excited to announce that *100%*of*the*proceeds* from the Go store go directly to GoBridge.
[[https://github.com/gobridge/about-us][GoBridge]] is a non-profit organization focused on building bridges to educate underrepresented groups by teaching technical skills and fostering diversity in the Go community.

.image store/gophers.jpg

At the [[https://go-store.io][*Go*store*]] you’ll find our beloved gopher plushies and vinyls as well as new merchandise.
Visit the store for 20% off with code *Gopher20* through Sunday, July 21st at 11:59 PM PST.

We plan on adding stock to current items and bringing on new ones to the [[https://go-store.io][store]].
If we are out of stock when you go to place an order, check back again soon.
Follow the [[https://twitter.com/golang][Twitter account]] for updates, we plan on adding new goodies for all our Go fans out there, so keep an eye out!

Happy shopping!

