Published Sep 3, 2019

Episode 202: Andrew Gerrand on Go

Andrew Gerrand dives into the evolution of the Go programming language, shedding light on its inception, community-driven growth, and the innovative concurrency model featuring goroutines and channels. He also highlights Go's exceptional tooling, profiling capabilities, and import management, demonstrating how they collectively streamline and elevate the coding process.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Concurrency

    Go's concurrency model is a standout feature, designed to simplify complex programming tasks. explains that it revolves around goroutines and channels, allowing developers to write concurrent code in a straightforward manner. Goroutines are lightweight threads managed by Go's runtime, enabling efficient execution across multiple CPU threads without the overhead of traditional OS threads 1. Channels facilitate safe communication between goroutines, inspired by the concept of communicating sequential processes 1. This model offers a comprehensible programming experience while maintaining high performance.

    You get that really nice high performance concurrency that you get from say, node JSDEM, but you can run across multiple threads and you can just write your code in a normal top down style.

    ---

    Additionally, Go's tooling is designed to ease code manipulation, with tools like Goimports automating package management, reducing friction in coding and dependency handling 2.

       

    Practical Use

    Practical applications of Go's concurrency features highlight its real-world utility. discusses slices, a unique feature in Go that balances ease of use with control over memory allocation 3. Slices provide a flexible view on arrays, allowing dynamic resizing while maintaining efficient memory usage. This feature exemplifies Go's approach to offering powerful tools without sacrificing simplicity.

    When working with slicers, they're one of the few novel things in go as a language, and I think they work really well.

    ---

    Furthermore, Go's import system streamlines package management by eliminating the need for makefiles, using a path-based convention for package identification 4. This system simplifies the build process and enhances code organization, reflecting Go's emphasis on efficiency and developer productivity.

Related Episodes