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

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

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)