Upgrade to Pro — share decks privately, control downloads, hide ads and more …

defer f()とdefer fの挙動を 誤解していた話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for kogamochiduki kogamochiduki
September 20, 2025

defer f()とdefer fの挙動を 誤解していた話

Go Conference 2025の発表で使ったスライドです。
https://gocon.jp/2025/talks/939749/

参考
- The Go Programming Language Specification(https://go.dev/ref/spec)
- Effective Go(https://go.dev/doc/effective_go)
- Go Fridayこぼれ話:非公開(unexported)な機能を使ったテスト #golang
(https://engineering.mercari.com/blog/entry/2018-08-08-080000/)
- golang.org/x/sync/singleflightパッケージから学ぶdouble defer sandwich by tenntenn(https://www.youtube.com/watch?v=03Lo84Ugnyk)
- 【Go】deferを理解しよう!〜初学者向けガイド〜(https://qiita.com/kogamochiduki/items/abc8548fad2e8e382508)

Avatar for kogamochiduki

kogamochiduki

September 20, 2025
Tweet

Other Decks in Programming

Transcript

  1. Tips②:double defer sandwich tenntenn Conference 2024 golang.org/x/sync/singleflightパッケージから学ぶ double defer sandwich

    by tenntenn (https://www.youtube.com/watch?v=03Lo84Ugnyk) 2重のdeferを用いて、ある関数を呼び出した時にpanicが発生したか、runtime.Goexit が発生したかを見分けるテクニック
  2. 参考 • The Go Programming Language Specification(https://go.dev/ref/spec) • Effective Go(https://go.dev/doc/effective_go)

    • Go Fridayこぼれ話:非公開(unexported)な機能を使ったテスト #golang (https://engineering.mercari.com/blog/entry/2018-08-08-080000/) • golang.org/x/sync/singleflightパッケージから学ぶdouble defer sandwich by tenntenn(https://www.youtube.com/watch?v=03Lo84Ugnyk) • 【Go】deferを理解しよう!〜初学者向けガイド〜 (https://qiita.com/kogamochiduki/items/abc8548fad2e8e382508)