June 2025 Go Meetup is Back!
Meetup #75 on June 18 in person at Edmonton Unlimited at 6:00 pm MST Please RSVP at Meetup
Agenda
Go Meetup is Back!
We are back in person! Join us for a discussion on the latest features of Go and how they can be applied to your projects.
Why Go?
Peter Preeper made the case for Go as an excellent choice for a project. He introduced Go as a language created at Google in 2009 and designed for simplicity, performance, and concurrency, with a lineage from Robert Griesemer, Rob Pike, and Ken Thompson. The talk highlighted Go's small keyword set and strong static typing, built-in concurrency with lightweight goroutines and channels, garbage collection, and the Go 1.0 compatibility promise. Real-world use cases included Docker, Kubernetes, Terraform, the AWS CLI, and companies like Uber, Netflix, and Twitch. He closed on why teams choose Go: fast compilation and execution, an approachable syntax, and a strong standard library and tooling ecosystem.
Key points:
- Go was created at Google in 2009 for simplicity, performance, and concurrency.
- It has only ~25 keywords and strong static typing.
- Concurrency is built in via goroutines and channels.
- Garbage collection and a long-term compatibility promise reduce maintenance burden.
- Fast compilation/execution and easy learning make it productive.
- Docker, Kubernetes, Terraform, and the AWS CLI are written in Go.
Why Not Go?
Peter Preeper presented the counterpoint to his "Why Go?" talk, arguing that Go comes with real trade-offs. He walked through common criticisms — no generics before 1.18, limited object-oriented features, verbose error handling, package-management history, and runtime overhead versus C/C++ — and used examples to show how repetitive if err != nil checks can lead to deeply nested code with no stack traces by default. He contrasted inheritance ("is-a") with composition ("has-a") to explain Go's preference for composition, and listed missing features such as operator overloading, implicit conversion, exceptions, and direct inheritance. The talk covered GC pauses and higher memory use than C/C++, use cases where Go may not fit (CPU-heavy work, GUI apps, embedded and real-time systems), and alternative languages. His conclusion: it depends on the problem and the team.
Key points:
- Common criticisms: generics (pre-1.18), OOP limits, error verbosity, deps, runtime overhead.
- Repetitive
if err != nilchecks add nesting; no stack traces by default. - Go favors composition over inheritance and has no direct inheritance.
- Missing features include overloading, implicit conversion, exceptions, and metaprogramming.
- GC pauses and higher memory use are trade-offs versus C/C++.
- Go may not fit CPU-heavy, GUI, embedded, or real-time work.
- Alternatives include Rust, Python, Java, C++, and Node.js — it depends.
Future Topics Discussion
Open discussion on topic for future talks, workshops, activities.
News
Articles & Resources
Youtube Channels
Conference Channels
Podcasts
Inactive Podcasts
- Go Time (no longer running, but many good episodes)
Events
- Edmonton Go Meetup July