Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goでのレシーバーとnilの関係 / Receiver and nil relationshi...
Search
Kentaro Kawano
July 26, 2019
Programming
510
0
Share
Goでのレシーバーとnilの関係 / Receiver and nil relationship in Go
Kentaro Kawano
July 26, 2019
More Decks by Kentaro Kawano
See All by Kentaro Kawano
Starting Python
kawaken
0
120
Goの時刻に関するテスト/Testing time in Go
kawaken
0
130
AWS Lambda + Go
kawaken
0
130
goaのdesignをラクに書く/Write goa design easily
kawaken
0
120
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
120
Pyvmomiとansibleのdynamic inventory
kawaken
0
130
Other Decks in Programming
See All in Programming
実用!Hono RPC2026
yodaka
2
310
cloudnative conference 2026 flyle
azihsoyn
0
170
Import assertionsが消えた日~ECMAScriptの仕様はどう決まり、なぜ覆るのか~
bicstone
2
180
Making the RBS Parser Faster
soutaro
0
710
tRPCの概要と少しだけパフォーマンス
misoton665
2
270
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
410
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
160
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.9k
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
200
要はバランスからの卒業 #yumemi_grow
kajitack
0
140
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
23
12k
Featured
See All Featured
The browser strikes back
jonoalderson
0
1k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Un-Boring Meetings
codingconduct
0
290
The Pragmatic Product Professional
lauravandoore
37
7.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
780
Bash Introduction
62gerente
615
210k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Accessibility Awareness
sabderemane
1
110
Chasing Engaging Ingredients in Design
codingconduct
0
190
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
Designing for Timeless Needs
cassininazir
0
220
Marketing to machines
jonoalderson
1
5.2k
Transcript
Goでのレシーバとnilの関係 2019-07-26 Umeda.go 2019 Summer Kentaro Kawano
レシーバとは • メソッド呼び出しの対象 • 値レシーバ • ポインタレシーバ
None
レシーバがnilのメソッド呼び出しはpanicになる?
None
必ずpanicになるとは限らない レシーバがnilのメソッド呼び出しはpanicになる?
メソッド式 • RecieverType.MethodName での呼び出しが可能 • user.SayHi() は (*User).SayHi(user) と同じ •
レシーバはメソッド式の第⼀引数になる
None
どんな時にpanicする?
間接参照するとき • ポインタ型の変数(値はnil)に対して • フィールドを参照するとき • 値レシーバが必要なメソッドを呼び出すとき • 変数はレシーバの型に応じて⾃動的に型が変換される
None
None
ダメな実装例
None
⼤事なところではnilチェックをちゃんとしよう
まとめ • レシーバには値レシーバとポインタレシーバがある • レシーバはメソッド式の第⼀引数 • レシーバがnilでもpanicしないケースがある • ポインタレシーバを利⽤する場合にはnilチェックする •
すべてのメソッドでチェックする必要はない(経験則