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 relationship in Go
Search
Kentaro Kawano
July 26, 2019
Programming
0
330
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
27
Goの時刻に関するテスト/Testing time in Go
kawaken
0
23
AWS Lambda + Go
kawaken
0
22
goaのdesignをラクに書く/Write goa design easily
kawaken
0
21
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
24
Pyvmomiとansibleのdynamic inventory
kawaken
0
27
Other Decks in Programming
See All in Programming
【Go言語】golangci-lintの使い方
tomo1227
0
270
DynamoDB コスト最適化っぽいことの基本 with Terraform
kuro_kurorrr
2
250
[After Kotlin Fest 2024 LT Night @ Sansan] もっともっとKotlinを好きになる!K2 Compiler Pluginで遊んでみよう!
kitakkun
2
260
I/O Extended Android in Korea 2024 ~ Whats new in Android development tools
pluu
0
250
小さな開発会社を作った理由
polidog
0
1.9k
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
Google's Recipe for Scaling (Web) Security – LocoMocoSec 2024
lweichselbaum
0
170
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
AHC035解説
terryu16
0
710
CSC307 Lecture 06
javiergs
PRO
0
360
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
Featured
See All Featured
Clear Off the Table
cherdarchuk
89
320k
Agile that works and the tools we love
rasmusluckow
325
20k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
20
7.2k
Done Done
chrislema
179
15k
Statistics for Hackers
jakevdp
792
220k
Into the Great Unknown - MozCon
thekraken
20
1.3k
For a Future-Friendly Web
brad_frost
173
9.2k
The Power of CSS Pseudo Elements
geoffreycrofte
64
5.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
357
18k
What's in a price? How to price your products and services
michaelherold
239
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
90
47k
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チェックする •
すべてのメソッドでチェックする必要はない(経験則