Slide 1

Slide 1 text

おーたかこーたろー @otakakot The Go gopher was designed by Renée French. cmp.Or に感動した 2024.11.20 golang.tokyo #37

Slide 2

Slide 2 text

cmp.Or 関数をご存知ですか?

Slide 3

Slide 3 text

Go 標準の cmp パッケージの関数 google/go-cmp

Slide 4

Slide 4 text

Kotaro Otaka おーたかこーたろー Web Engineer 新卒入社 Hello Golang! Web Engineer 株式会社ビットキー 2020.04 2021.04 2022.11 @otakakot

Slide 5

Slide 5 text

https://speakerdeck.com/otakakot/free-go-server-development-recommendations https://zenn.dev/otakakot/articles/9e9269a87aafeb

Slide 6

Slide 6 text

アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装 04. cmp.Or にヒントを得て

Slide 7

Slide 7 text

アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装 04. cmp.Or にヒントを得て

Slide 8

Slide 8 text

Go 1.22 で登場した関数 cmp.Or とは ref: https://go.dev/doc/go1.22

Slide 9

Slide 9 text

アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装 04. cmp.Or にヒントを得て

Slide 10

Slide 10 text

cmp.Or の使い方 ref: https://pkg.go.dev/cmp#Or

Slide 11

Slide 11 text

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さんによるものです

Slide 12

Slide 12 text

cmp.Or の使い方

Slide 13

Slide 13 text

アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装 04. cmp.Or にヒントを得て

Slide 14

Slide 14 text

cmp.Or 関数の実装 ref: https://cs.opensource.google/go/go/+/refs/tags/go1.23.2:src/cmp/cmp.go

Slide 15

Slide 15 text

アジェンダ 01. cmp.Or とは 02. cmp.Or の使い方 03. cmp.Or の実装 04. cmp.Or にヒントを得て

Slide 16

Slide 16 text

nil に対して似たようなことできそう

Slide 17

Slide 17 text

● NilOr … 最初にヒットした Not nil な値を返す ● NilDef … nil だったら default 値を返す ● NilZero … nil だったら zero 値を返す リポジトリ https://github.com/otakakot/nilx nilx という nil に対する便利関数

Slide 18

Slide 18 text

最初にヒットした Not nil な値を返す

Slide 19

Slide 19 text

最初にヒットした Not nil な値を返す ~ 使い方 ~

Slide 20

Slide 20 text

最初にヒットした Not nil な値を返す

Slide 21

Slide 21 text

最初にヒットした Not nil な値を返す ~ 使い方 ~

Slide 22

Slide 22 text

nil だったら default 値を返す

Slide 23

Slide 23 text

nil だったら default 値を返す ~ 使い方 ~

Slide 24

Slide 24 text

nil だったら zero 値を返す

Slide 25

Slide 25 text

nil だったら zero 値を返す ~ 使い方 ~

Slide 26

Slide 26 text

雑感 ● NilOr で事足りるが名前をつけて使い方を明確化 ○ NilDef ○ NilZero ● 戻り値を値にするかポインタにするか ○ 安全に倒すために値を返却

Slide 27

Slide 27 text

ぱっと思いつきそうではある

Slide 28

Slide 28 text

ライブラリやほかにもアイデア を知っていたら教えてください!

Slide 29

Slide 29 text

おーたかこーたろー @otakakot The Go gopher was designed by Renée French. cmp.Or に感動した 2024.11.20 golang.tokyo #37