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
850
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
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
390
組込みだけじゃない! TinyGo で始める無料クラウド開発入門
otakakot
1
10
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
1
3.5k
SQLBoiler がメンテナンスモードになりまして
otakakot
0
180
Wasm わからないけど Go で実装したいから入門する
otakakot
1
9.9k
net/http/httptest が推しです♡
otakakot
3
290
無料で楽しむ Go サーバー開発のススメ
otakakot
11
3.7k
Go のテストで失敗をマークする
otakakot
1
230
Other Decks in Programming
See All in Programming
CSC509 Lecture 10
javiergs
PRO
0
170
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
860
CSC305 Lecture 14
javiergs
PRO
0
250
Inside of Swift Export
giginet
PRO
1
520
r2-image-worker
yusukebe
1
150
歴史から学ぶ「Why PHP?」 PHPを書く理由を改めて理解する / Learning from History: “Why PHP?” Rediscovering the Reasons for Writing PHP
seike460
PRO
0
130
Private APIの呼び出し方
kishikawakatsumi
2
770
Migration to Signals, Resource API, and NgRx Signal Store
manfredsteyer
PRO
0
160
GitHub Copilotを使いこなせ!/mastering_github_copilot!
kotakageyama
2
860
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
340
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
15
48k
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
650
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Stop Working from a Prison Cell
hatefulcrawdad
272
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
What's in a price? How to price your products and services
michaelherold
246
12k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1k
Automating Front-end Workflow
addyosmani
1371
200k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to train your dragon (web standard)
notwaldorf
97
6.3k
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