---
title: "When is it OK to panic in Go?"
publication: "Go Weekly"
issue: 548
published_at: "2025-04-02"
canonical_url: "https://golangweekly.com/issues/548"
---

Plus Go 1.24.2, and the Go gopher marks a quarter century. |        

#​548 — April 2, 2025 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/548)  

Together with [![Blacksmith\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_820,h_100/e_make_transparent/co_white,e_outline:7/uq9yvkqtinkixhiq19mf.png)](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=primary&utm_campaign=apr2&utm_term=golang)   

Go Weekly  

[A Guide to Optimizing for High Performance in Go](https://goperf.dev/) — An in-progress collection of technical articles aimed at helping Go developers write faster, more efficient apps. The initial focus is on common patterns like [object pooling](https://goperf.dev/01-common-patterns/object-pooling/), [struct field alignment](https://goperf.dev/01-common-patterns/fields-alignment/), and [using worker pools](https://goperf.dev/01-common-patterns/worker-pool/), with a guide to high-performance networking set to follow soon. 

Alexander Stavonin   

[Goodbye Core Types, Hello Go As We Know and Love It](https://go.dev/blog/coretypes) — A look at Go’s evolving type system, revealing how the abstraction of _core types_ (introduced with generics in Go 1.18) complicated otherwise straightforward language features, and how [their removal in Go 1.25](https://go.dev/blog/coretypes#go-125) is set to simplify both the spec and everyday coding. (Hacker News reactions [here](https://news.ycombinator.com/item?id=43483842).) 

Robert Griesemer (Go Core Team)   [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/2f4c76ff.png)](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=primary&utm_campaign=apr2&utm_term=golang) 

[2X-40X Faster Docker Builds with Blacksmith](https://blacksmith.sh/?utm_source=cooperpress&utm_medium=primary&utm_campaign=apr2&utm_term=golang) — With a one-line code change, Blacksmith can make your Docker builds incremental by mounting your Docker layer cache into your GitHub Actions runner. Blacksmith is used by 300+ companies like Ashby, Clerk, and Mintlify. 

Blacksmith sponsor   

[When is it OK to Panic in Go?](https://www.alexedwards.net/blog/when-is-it-ok-to-panic-in-go) — One of the [Go proverbs](https://go-proverbs.github.io/) is “Don’t panic,” which isn’t just good life advice but also saying not to use `panic` for normal error handling. Alex explores `panic` and some times when you _should_ use it. 

Alex Edwards   

**IN BRIEF:** 

- [Go 1.24.2](https://go.dev/doc/devel/release#go1.24.2) and 1.23.8 have been released including security fixes to`net/http`.
- Did you know the Go gopher, as designed by Renée French, is over 25 years old? 11 years ago, Rob Pike and Andrew Gerrand [told the story of Go's popular mascot](https://go.dev/blog/gopher) on the Go blog.
- 📈 The [latest TIOBE index](https://www.tiobe.com/tiobe-index/) of programming language popularity is out with Go moving up from 8th to 7th position.   

[The First Newsletter Dedicated to Product Engineers](https://go.posthog.com/go-apr2) — Learn strategies and tactics you need to succeed as a product engineer (and build products users love). 

PostHog sponsor   

📺 [Go Concurrency from the Beginning](https://www.youtube.com/watch?v=f9IrbW13C_c) – A nifty 8 minute video quickly touring Go’s concurrency mechanisms using basic examples. Living, Etc. 

📄 [Building a Real-Time Notification System in Go with Postgres](https://www.finly.ch/engineering-blog/436253-building-a-real-time-notification-system-in-go-with-postgresql) Ravi (Finly) 

📄 [Interfacing with WebAssembly in Go](https://yokecd.github.io/blog/posts/interfacing-with-webassembly-in-go/) David Desmarais-Michaud 

📄 [Building a Network Vulnerability Scanner with Go](https://www.sitepoint.com/building-a-network-vulnerability-scanner-with-go/) Rez Moss (Sitepoint) 

📄 [5 GitHub Actions Every Maintainer Needs to Know](https://github.blog/open-source/maintainers/5-github-actions-every-maintainer-needs-to-know/) Finley and Davis (GitHub)  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nvevwakvvkh6vdq4w5wu.jpg)](https://ls-lint.org/blog/announcements/v2.3.0.html)  

[Introducing ls-lint: A File Structure Linter](https://ls-lint.org/blog/announcements/v2.3.0.html) — Billing itself as an ‘extremely fast file and directory name linter’, ls-lint is a Go powered tool for enforcing some structure over a project’s filesystem and naming policies. [GitHub repo.](https://github.com/loeffel-io/ls-lint) 

Lucas Löffel   

[urfave/cli 3.1: A Declarative Way to Build Go CLI Apps](https://github.com/urfave/cli) — The [manual](https://cli.urfave.org/v3/getting-started/) outlines all of the key features, but think shell auto-completion, option parsing, help text, etc. 

Jeremy Saenz and Contributors   

[Revive 1.8: A Faster, Configurable, Flexible Linter for Go](https://revive.run/) — A drop-in replacement of golint that aims to provide a little more structure, configurability, and performance. It’s used by numerous large Go projects and libraries. The README on the [GitHub repo](https://github.com/mgechev/revive?tab=readme-ov-file#revive) explains how it differs to `golint`. 

Minko Gechev   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/xlunhx4qypl7xtsq62sp.jpg)](https://github.com/guptarohit/asciigraph)  

[asciigraph: ASCII Line Graph Rendering Library](https://github.com/guptarohit/asciigraph) — A longstanding library for rendering basic line graphs in ASCII text, such as at the terminal, all with no dependencies. 

Rohit Gupta   

[Prefixed UUIDs: A Package That Adds Type-Safe Prefixes to UUIDs](https://github.com/minhajuddin/prefixed_uuids) 
Khaja Minhajuddin   

- [DoltgreSQL 1.51](https://github.com/dolthub/dolt) – Version controlled Postgres-a-like with Git-like functionality.
- [Validator 10.26](https://github.com/go-playground/validator) – Value validations for structs and fields based on tags.
- [Buf 1.51](https://github.com/bufbuild/buf) – Tool for working with Protocol Buffers.
- [Clickhouse Go 2.34](https://github.com/ClickHouse/clickhouse-go) – Go driver for ClickHouse.
- [Colly 2.2](https://github.com/gocolly/colly) – Go scraper and crawler framework.         

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict).
Go is a [trademark of Google](https://go.dev/brand).
The [Go gopher](https://go.dev/blog/gopher), whenever used, is an original creation by Renée French. 

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

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