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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kentaro Kawano
July 26, 2019
Programming
520
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
130
Goの時刻に関するテスト/Testing time in Go
kawaken
0
150
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
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
4
1.6k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.4k
Inside Stream API
skrb
1
760
ふつうのFeature Flag実践入門
irof
8
4.1k
さぁV100、メモリをお食べ・・・
nilpe
0
150
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
110
New "Type" system on PicoRuby
pocke
1
1k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
280
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
130
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
2
240
Creating Composable Callables in Contemporary C++
rollbear
0
160
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Language of Interfaces
destraynor
162
27k
First, design no harm
axbom
PRO
2
1.2k
Producing Creativity
orderedlist
PRO
348
40k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
860
sira's awesome portfolio website redesign presentation
elsirapls
0
280
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
400
The browser strikes back
jonoalderson
0
1.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
260
Testing 201, or: Great Expectations
jmmastey
46
8.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チェックする •
すべてのメソッドでチェックする必要はない(経験則