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
480
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
99
Goの時刻に関するテスト/Testing time in Go
kawaken
0
110
AWS Lambda + Go
kawaken
0
100
goaのdesignをラクに書く/Write goa design easily
kawaken
0
100
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
100
Pyvmomiとansibleのdynamic inventory
kawaken
0
110
Other Decks in Programming
See All in Programming
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.2k
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.9k
SQL Server 2025 LT
odashinsuke
0
120
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.4k
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
チームをチームにするEM
hitode909
0
430
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
340
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
1
190
ThorVG Viewer In VS Code
nors
0
500
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Code Review Best Practice
trishagee
74
19k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
100
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Paper Plane (Part 1)
katiecoart
PRO
0
2.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
A Soul's Torment
seathinner
1
2.1k
The Cult of Friendly URLs
andyhume
79
6.7k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
170
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チェックする •
すべてのメソッドでチェックする必要はない(経験則