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
350
cmp.Or に感動した
Kotaro Otaka
November 20, 2024
Tweet
Share
More Decks by Kotaro Otaka
See All by Kotaro Otaka
Wasm わからないけど Go で実装したいから入門する
otakakot
0
78
net/http/httptest が推しです♡
otakakot
3
110
無料で楽しむ Go サーバー開発のススメ
otakakot
10
2.8k
Go のテストで失敗をマークする
otakakot
0
56
Other Decks in Programming
See All in Programming
Serverless苦闘史
mosh_inc
0
150
新規学習のハードルを下げる方法とは?/ How to Make Learning Something New Easier?
nobuoooo
1
140
コンテンツの主権を守るため(?)、高機能画像CDNからAWS自前対応に乗り換えた話
lengthtail
1
120
Jakarta EE meets AI
ivargrimstad
0
100
N.E.X.T LEVEL
pluu
2
270
複雑な仕様に立ち向かうアーキテクチャ
myohei
0
140
事業成長を爆速で進めてきたプロダクトエンジニアたちの成功談・失敗談
nealle
3
1.3k
HTTP compression in PHP and Symfony apps
dunglas
2
1.5k
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
0
140
型のインスタンス化は非常に深く、無限である可能性があります。
kimitashoichi
0
160
42 best practices for Symfony, a decade later
tucksaun
1
150
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1k
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
490
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Producing Creativity
orderedlist
PRO
341
39k
Agile that works and the tools we love
rasmusluckow
328
21k
Writing Fast Ruby
sferik
627
61k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Embracing the Ebb and Flow
colly
84
4.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Designing for humans not robots
tammielis
250
25k
Become a Pro
speakerdeck
PRO
25
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