---
title: "Go 1.18 - the most generic release yet"
publication: "Go Weekly"
issue: 404
published_at: "2022-03-18"
canonical_url: "https://golangweekly.com/issues/404"
---

Plus what it takes to master Go, low overhead caching, and a 3D model of our favorite blue animal. |        

#​404 — March 18, 2022 

[Unsubscribe](https://golangweekly.com/leave/*|UID|*)|[Read on the Web](https://golangweekly.com/issues/404)   

🥳 Woo-hoo, Go 1.18 is finally here. And yes, we stole our [subject line's joke](https://twitter.com/bradfitz/status/1503785621847912453) from Brad Fitzpatrick :-)  

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/nfb05fxcgepi3emyvnmt.jpg)](https://go.dev/blog/go1.18)   

Go 1.18 Released 

Given the extra excitement around Go 1.18 recently, it's hard to believe Go 1.17 was only released seven months ago! 1.18 is a big enough release that rather than link solely to the [main release announcement](https://go.dev/blog/go1.18), we want to cover a variety of things you might find useful: 

- The [official release post](https://go.dev/blog/go1.18) is a good place to start – the headline features of generics, [fuzz testing](https://go.dev/doc/fuzz/), and [workspaces](https://zerokspot.com/weblog/2022/01/14/workspaces-in-go118/) are mentioned, but without going into details.
- The [official Go 1.18 release notes](https://go.dev/doc/go1.18) cover the technicalities of the release at a high level in bulletpoint fashion.
- Carl Johnson covers [three lesser explored 'minor' features](https://blog.carlmjohnson.net/post/2022/golang-118-even-more-minor-features/) in Go 1.18.
- _The New Stack_'s Darryl K. Taft calls 1.18 [Go's 'biggest release yet'](https://thenewstack.io/go-1-18-the-programming-languages-biggest-release-yet/).
- If you like such things, the release provoked a particularly [large discussion on Hacker News](https://news.ycombinator.com/item?id=30688208) including, predictably, a lot of to-and-fro over the pros and cons of generics.
- A [handful of simple tutorials](https://gosamples.dev/tags/generics-intro/) on using generics.   [![\](https://copm.s3.amazonaws.com/f26925c2.png)](https://dashboard.redisgreen.net/goweekly) 

[Secure Redis Hosting from RedisGreen](https://dashboard.redisgreen.net/goweekly) — The latest Redis features, instrumented and scaled with the tools teams need as they grow. 

RedisGreen sponsor   

[Write Once, Store Anywhere: Extensible File Systems for Go](https://t.co/AIW8Ks7YYe) — Shows off a new, extensible file system pattern for use from Go – use [hackpadfs](https://github.com/hack-pad/hackpadfs) to take `fs` _“to a whole new level”_, says the author. 

John Starich   

**Quick bits:** 

- The author of [Mastering Go](https://www.packtpub.com/product/mastering-go-second-edition/9781838559335) went on the _Go Time_ podcast to talk about [▶️ what it actually takes to 'master' a language like Go](https://changelog.com/gotime/221).
- The popular _Strange Loop_ dev conference is taking place in Missouri this September and they're keen to have some Go talks on the schedule [if you want to speak](https://thestrangeloop.com/cfp.html).
- We found Justin Ribeiro's [neat 3D model of the Go gopher](https://github.com/justinribeiro/go-gopher-model) and used it in today's header graphic. Thanks Justin.     

Jobs  

[Backend Engineer | Remote within CET (-3/+3 hours) | Full-Time](https://jobs.lever.co/qonto/284b8162-5293-4ad7-a9e6-4ad26ce0c516?lever-origin=applied&lever-source%5B%5D=Cooperpress) — Europe's leading business finance solution. You will help us simplify everything from everyday banking and financing, to bookkeeping and spend management. 
Qonto   

[Backend / API Engineer at Textile (Remote)](https://grnh.se/20a9234c4us) — Written primarily in Go, built on top of protocols like [Libp2p](https://libp2p.io/), [IPFS](https://ipfs.io/), & [Filecoin](https://filecoin.io/), and is deployed to Google Kubernetes Engine. You'll interact with layers throughout the stack and own responsibilities from R&D to implementation and production monitoring. 
Textile   

[Find a Job Through Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired      

[Hacking Sum Types with Go Generics](https://blog.lawrencejones.dev/go-sum-type/) — Sum types are found in Haskell and other languages and are super convenient to group different types together. Generics (kind of) gives us the ability to create them in Go. 

Lawrence Jones   

[Building a gRPC Client in Go](https://sahansera.dev/building-grpc-client-go/) — This is about as simple as it gets because it relies on generating code from a Protobuf file (which is covered in an earlier [creating a gRPC server in Go](https://sahansera.dev/building-grpc-server-go/) article). 

Sahan Serasinghe   

[Creating a Go App with Alpine.js and Webview](https://dev.to/tschuehly/creating-a-go-gui-with-alpinejs-and-webview-3290) — It depends how you define a GUI app but if using some JavaScript and a web-view control (specifically [webview](https://github.com/webview/webview)) works for you, this tutorial covers one approach. This only covers the basics, with [the example code](https://github.com/tschuehly/pc3000-imagesorter/blob/master/webview.go) being perhaps more useful to read. 

Thomas Schühly   

[Implementing Java-esque Streams in Go with Generics](https://0x46.net/thoughts/2022/03/17/go-streams/) — The author isn’t entirely satisfied with the outcome, but it was a worthwhile experiment to see what sort of opportunities generics could open up. 

Filip Borkiewicz  

🛠 Code & Tools  

[Freecache 1.2.1: A Cache Library for Go with Zero GC Overhead](https://github.com/coocood/freecache) — Store millions of entries without expensive GC overhead. (When so many projects fizzle out within months, I always love it when a project we last featured 7 years ago gets an update!) 

Evan Zhou   

[Mage 1.13.0: A Make-Like Build Tool That Uses Go Functions](https://magefile.org/) — Write regular Go functions and Mage then turns them into Make-style runnable targets. Fantastic use of the Go gopher in its logo too :-) [GitHub repo](https://github.com/magefile/mage). 

Nate Finch   

[A ClickHouse Client for Go 1.18+](https://github.com/uptrace/go-clickhouse) — We’re already beginning to see client libraries leaning on generics, such as this one for the [Clickhouse](https://github.com/ClickHouse/ClickHouse) open source column oriented database system. 

Uptrace   

[Seamlessly Integrate Video into Your Go App](https://get.mux.com/3ekCeeJ) 

Mux sponsor   

[cli 2.4: A Fast Way to Build Go CLI Apps](https://github.com/urfave/cli) — The [manual](https://github.com/urfave/cli/blob/master/docs/v2/manual.md) outlines all of the key features, but think shell auto-completion, subcommands, option parsing, help text, etc. 

Jeremy Saenz and Contributors   

[LazyDocker: A Terminal-Based UI for Working with Docker](https://github.com/jesseduffield/lazydocker) — Not only is this a useful app for working with Docker, it’s a great example of a terminal-based app with a complete UI (powered by [gocui](https://github.com/jroimartin/gocui)) too. 

Jesse Duffield   

[The Official Go Driver for ArangoDB](https://github.com/arangodb/go-driver) — [ArangoDB](https://github.com/arangodb/arangodb) is a popular open source multi-model (graph, document, and search) database. 

ArangoDB   

[A CGo-Free Port of SQLite for Go Users](https://pkg.go.dev/modernc.org/sqlite) — Supports AMD64 and/or ARM64 on multiple platforms, but the latest release adds support for Linux on 64 bit RISC-V too. 

cznic / modernc   

[GoCV 0.30.0: Computer Vision in Go using OpenCV 4+](https://gocv.io/) — Gets a bump up to OpenCV 4.5.5. [GitHub repo](https://github.com/hybridgroup/gocv). 

The Hybrid Group   

[Qemantra: A Tool for Creating and Running QEMU VMs](https://github.com/pspiagicw/qemantra) 
pspiagicw         

Curated by [Glenn Goodrich](https://twitter.com/ruprict) and [Peter Cooper](https://twitter.com/peterc). 

[Change your email address](https://golangweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
