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
0
500
Goでのレシーバーとnilの関係 / Receiver and nil relationship in Go
Kentaro Kawano
July 26, 2019
Tweet
Share
More Decks by Kentaro Kawano
See All by Kentaro Kawano
Starting Python
kawaken
0
110
Goの時刻に関するテスト/Testing time in Go
kawaken
0
120
AWS Lambda + Go
kawaken
0
120
goaのdesignをラクに書く/Write goa design easily
kawaken
0
110
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
120
Pyvmomiとansibleのdynamic inventory
kawaken
0
120
Other Decks in Programming
See All in Programming
Ruby and LLM Ecosystem 2nd
koic
1
1.3k
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.1k
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
140
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
120
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
160
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
410
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.3k
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
130
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
130
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
190
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
300
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
380
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
330
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Believing is Seeing
oripsolob
1
94
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
91
First, design no harm
axbom
PRO
2
1.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Crafting Experiences
bethany
1
93
30 Presentation Tips
portentint
PRO
1
260
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
230
The Pragmatic Product Professional
lauravandoore
37
7.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チェックする •
すべてのメソッドでチェックする必要はない(経験則