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
400
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
54
Goの時刻に関するテスト/Testing time in Go
kawaken
0
61
AWS Lambda + Go
kawaken
0
53
goaのdesignをラクに書く/Write goa design easily
kawaken
0
54
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
52
Pyvmomiとansibleのdynamic inventory
kawaken
0
60
Other Decks in Programming
See All in Programming
iOSでQRコード生成奮闘記
ktcryomm
2
150
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
200
SwiftUI移行のためのインプレッショントラッキング基盤の構築
kokihirokawa
0
200
複数のAWSアカウントから横断で 利用する Lambda Authorizer の作り方
tc3jp
0
130
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
130
高セキュリティ・高耐障害性・サブシステム化。そして2億円
tasukulab280
2
410
Amazon Bedrockマルチエージェントコラボレーションを諦めてLangGraphに入門してみた
akihisaikeda
1
180
Jakarta EE meets AI
ivargrimstad
0
860
気がついたら子供が社会人になって 自分と同じモバイルアプリエンジニアになった件 / Parent-Child Engineers
koishi
0
130
Django NinjaによるAPI開発の効率化とリプレースの実践
kashewnuts
1
310
ML.NETで始める機械学習
ymd65536
0
260
CIBMTR振り返り+敗北から学ぶコンペの取り組み方反省
takanao
1
240
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
11
560
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
Writing Fast Ruby
sferik
628
61k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Into the Great Unknown - MozCon
thekraken
35
1.7k
Gamification - CAS2011
davidbonilla
80
5.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
11
1.3k
Facilitating Awesome Meetings
lara
53
6.3k
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チェックする •
すべてのメソッドでチェックする必要はない(経験則