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
46
Goの時刻に関するテスト/Testing time in Go
kawaken
0
53
AWS Lambda + Go
kawaken
0
45
goaのdesignをラクに書く/Write goa design easily
kawaken
0
43
Goでのチーム開発とコード管理の悩み/Team development and code management in Go
kawaken
0
47
Pyvmomiとansibleのdynamic inventory
kawaken
0
55
Other Decks in Programming
See All in Programming
BEエンジニアがFEの業務をできるようになるまでにやったこと
yoshida_ryushin
0
260
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
28
6.1k
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
2.3k
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
12
6.1k
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
240
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
300
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
230
Flatt Security XSS Challenge 解答・解説
flatt_security
0
1.1k
最近のVS Codeで気になるニュース 2025/01
74th
1
240
Linux && Docker 研修/Linux && Docker training
forrep
22
4.1k
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2k
2025.01.17_Sansan × DMM.swift
riofujimon
2
670
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
How to Ace a Technical Interview
jacobian
276
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Building Applications with DynamoDB
mza
93
6.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
A Philosophy of Restraint
colly
203
16k
Unsuck your backbone
ammeep
669
57k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
11
900
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チェックする •
すべてのメソッドでチェックする必要はない(経験則