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
410
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
58
Goの時刻に関するテスト/Testing time in Go
kawaken
0
63
AWS Lambda + Go
kawaken
0
60
goaのdesignをラクに書く/Write goa design easily
kawaken
0
61
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
60
Pyvmomiとansibleのdynamic inventory
kawaken
0
67
Other Decks in Programming
See All in Programming
趣味全開のAITuber開発
kokushin
0
200
AI Coding Agent Enablement - エージェントを自走させよう
yukukotani
14
6k
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
Develop Faster With FrankenPHP
dunglas
2
3.3k
Chrome Extension Techniques from Hell
moznion
1
160
gen_statem - OTP's Unsung Hero
whatyouhide
1
200
サービスレベルを管理してアジャイルを加速しよう!! / slm-accelerate-agility
tomoyakitaura
1
170
The Evolution of the CRuby Build System
kateinoigakukun
0
690
小田原でみんなで一句詠みたいな #phpcon_odawara
stefafafan
0
320
リストビュー画面UX改善の振り返り
splcywolf
0
130
AI時代の開発者評価について
ayumuu
0
140
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
270
Featured
See All Featured
Code Review Best Practice
trishagee
67
18k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
13
670
Music & Morning Musume
bryan
47
6.5k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
The Language of Interfaces
destraynor
157
24k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Navigating Team Friction
lara
184
15k
Speed Design
sergeychernyshev
29
890
Being A Developer After 40
akosma
91
590k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Gamification - CAS2011
davidbonilla
81
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チェックする •
すべてのメソッドでチェックする必要はない(経験則