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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kotaro Otaka
November 20, 2024
Programming
3
1k
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
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
580
Go で作った CLI ツールにバージョンを埋め込みたい
otakakot
0
200
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
520
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
110
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.7k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
310
Wasm わからないけど Go で実装したいから入門する
otakakot
1
10k
net/http/httptest が推しです♡
otakakot
3
380
無料で楽しむ Go サーバー開発のススメ
otakakot
11
4.2k
Other Decks in Programming
See All in Programming
へんな働き方
yusukebe
5
2.8k
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
150
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
320
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
170
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
170
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
280
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
1.1k
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
3
1.5k
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
200
『Kubernetes ☸️ で実践する Platform Engineering 』を最高速度で読み抜いたる!!👊🏻
hiroki_hasegawa
0
100
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
360
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
290
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
エンジニアに許された特別な時間の終わり
watany
106
240k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
80
Designing Powerful Visuals for Engaging Learning
tmiket
0
290
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Paper Plane (Part 1)
katiecoart
PRO
0
5.8k
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