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
cmp.Or に感動した
Search
Kotaro Otaka
November 20, 2024
Programming
3
600
cmp.Or に感動した
The Go gopher was designed by Renée French.
https://golangtokyo.connpass.com/event/331510/
Kotaro Otaka
November 20, 2024
Tweet
Share
More Decks by Kotaro Otaka
See All by Kotaro Otaka
SQLBoiler がメンテナンスモードになりまして
otakakot
0
67
Wasm わからないけど Go で実装したいから入門する
otakakot
1
210
net/http/httptest が推しです♡
otakakot
3
220
無料で楽しむ Go サーバー開発のススメ
otakakot
10
3.3k
Go のテストで失敗をマークする
otakakot
0
160
Other Decks in Programming
See All in Programming
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
1
3.5k
プロフェッショナルとしての成長「問題の深掘り」が導く真のスキルアップ / issue-analysis-and-skill-up
minodriven
8
1.7k
SwiftDataのカスタムデータストアを試してみた
1mash0
0
110
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
120
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
290
PHPバージョンアップから始めるOSSコントリビュート / how2oss-contribute
dmnlk
1
1.1k
Make Parsers Compatible Using Automata Learning
makenowjust
2
5.6k
Youtube Lofier - Chrome拡張開発
ninikoko
0
2.5k
Empowering Developers with HTML-Aware ERB Tooling @ RubyKaigi 2025, Matsuyama, Ehime
marcoroth
2
790
趣味全開のAITuber開発
kokushin
0
200
[NG India] Event-Based State Management with NgRx SignalStore
markostanimirovic
1
170
Compose Hot Reload is here, stop re-launching your apps! (Android Makers 2025)
zsmb
1
550
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
523
40k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
570
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
A better future with KSS
kneath
239
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.7k
Practical Orchestrator
shlominoach
187
11k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Transcript
おーたかこーたろー @otakakot The Go gopher was designed by Renée French.
cmp.Or に感動した 2024.11.20 golang.tokyo #37
cmp.Or 関数をご存知ですか?
Go 標準の cmp パッケージの関数 google/go-cmp
Kotaro Otaka おーたかこーたろー Web Engineer 新卒入社 Hello Golang! Web Engineer
株式会社ビットキー 2020.04 2021.04 2022.11 @otakakot
https://speakerdeck.com/otakakot/free-go-server-development-recommendations https://zenn.dev/otakakot/articles/9e9269a87aafeb
アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装
04. cmp.Or にヒントを得て
アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装
04. cmp.Or にヒントを得て
Go 1.22 で登場した関数 cmp.Or とは ref: https://go.dev/doc/go1.22
アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装
04. cmp.Or にヒントを得て
cmp.Or の使い方 ref: https://pkg.go.dev/cmp#Or
Go 1.22 リリースパーティ 2023.03.18 開催 https://gocon.connpass.com/event/310606/ https://youtu.be/0nsryM4X-0I?t=1038 GoのマスコットのGopherの原作者はRenee Frenchさんです Gopherのイラストはtenntennさんによるものです
cmp.Or の使い方
アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装
04. cmp.Or にヒントを得て
cmp.Or 関数の実装 ref: https://cs.opensource.google/go/go/+/refs/tags/go1.23.2:src/cmp/cmp.go
アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装
04. cmp.Or にヒントを得て
nil に対して似たようなことできそう
• NilOr … 最初にヒットした Not nil な値を返す • NilDef …
nil だったら default 値を返す • NilZero … nil だったら zero 値を返す リポジトリ https://github.com/otakakot/nilx nilx という nil に対する便利関数
最初にヒットした Not nil な値を返す
最初にヒットした Not nil な値を返す ~ 使い方 ~
最初にヒットした Not nil な値を返す
最初にヒットした Not nil な値を返す ~ 使い方 ~
nil だったら default 値を返す
nil だったら default 値を返す ~ 使い方 ~
nil だったら zero 値を返す
nil だったら zero 値を返す ~ 使い方 ~
雑感 • NilOr で事足りるが名前をつけて使い方を明確化 ◦ NilDef ◦ NilZero • 戻り値を値にするかポインタにするか
◦ 安全に倒すために値を返却
ぱっと思いつきそうではある
ライブラリやほかにもアイデア を知っていたら教えてください!
おーたかこーたろー @otakakot The Go gopher was designed by Renée French.
cmp.Or に感動した 2024.11.20 golang.tokyo #37