Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
380
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
36
Goの時刻に関するテスト/Testing time in Go
kawaken
0
38
AWS Lambda + Go
kawaken
0
33
goaのdesignをラクに書く/Write goa design easily
kawaken
0
29
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
35
Pyvmomiとansibleのdynamic inventory
kawaken
0
40
Other Decks in Programming
See All in Programming
React への依存を最小にするフロントエンド設計
takonda
21
8.3k
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
3
1.4k
Contemporary Test Cases
maaretp
0
150
Java 23の概要とJava Web Frameworkの現状 / Java 23 and Java web framework
kishida
2
360
Discord Bot with AI -for English learners-
xin9le
0
100
Leveling Up Developer Tooling for the Modern Rails & Hotwire Era @ Ruby Türkiye, November 2024
marcoroth
0
150
CSC509 Lecture 12
javiergs
PRO
0
170
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
9
4k
Better Code Design in PHP
afilina
PRO
0
140
距離関数を極める! / SESSIONS 2024
gam0022
0
340
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
2.9k
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
260
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Rails Girls Zürich Keynote
gr2m
94
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.3k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Making Projects Easy
brettharned
115
5.9k
Embracing the Ebb and Flow
colly
84
4.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
A Tale of Four Properties
chriscoyier
156
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
760
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チェックする •
すべてのメソッドでチェックする必要はない(経験則