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
350
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
28
Goの時刻に関するテスト/Testing time in Go
kawaken
0
27
AWS Lambda + Go
kawaken
0
25
goaのdesignをラクに書く/Write goa design easily
kawaken
0
25
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
31
Pyvmomiとansibleのdynamic inventory
kawaken
0
33
Other Decks in Programming
See All in Programming
なぜアジャイルがうまくいかないのか?
yum3
1
110
Ruby Parser progress report 2024
yui_knk
2
230
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
150
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
210
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
420
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Developer Joy == Developer Productivity (really!)
hollycummins
1
220
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
230
Kotlin 2.0 and Beyond
antonarhipov
2
150
あなたのアプリ、ログはでてますか?あるいはログをだしてますか? (Funabashi.dev用 軽量版)
uzulla
2
130
Modernisation Progressive d’Applications PHP
hhamon
0
110
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Become a Pro
speakerdeck
PRO
22
4.9k
A Philosophy of Restraint
colly
202
16k
Faster Mobile Websites
deanohume
304
30k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Being A Developer After 40
akosma
84
590k
Producing Creativity
orderedlist
PRO
340
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Documentation Writing (for coders)
carmenintech
65
4.3k
We Have a Design System, Now What?
morganepeng
48
7.1k
What the flash - Photography Introduction
edds
67
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
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チェックする •
すべてのメソッドでチェックする必要はない(経験則