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
110
goaのdesignをラクに書く/Write goa design easily
kawaken
0
110
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
110
Pyvmomiとansibleのdynamic inventory
kawaken
0
110
Other Decks in Programming
See All in Programming
CSC307 Lecture 10
javiergs
PRO
1
690
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.1k
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
390
文字コードの話
qnighy
43
17k
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
440
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
240
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
190
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
520
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
410
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
270
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
14
7.8k
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
680
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
180
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.7k
Writing Fast Ruby
sferik
630
62k
A better future with KSS
kneath
240
18k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
The Curious Case for Waylosing
cassininazir
0
260
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
110
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
340
Faster Mobile Websites
deanohume
310
31k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Embracing the Ebb and Flow
colly
88
5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
230
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チェックする •
すべてのメソッドでチェックする必要はない(経験則