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
Goの文字列置換とその実装
Search
po3rin
July 14, 2020
Programming
1
370
Goの文字列置換とその実装
文字列置換が func Replace と func (*Replacer) Replace の2つの標準機能のアルゴリズムやデータ構造の違いからなぜ2つあるのかを理解しよう。
po3rin
July 14, 2020
Tweet
Share
More Decks by po3rin
See All by po3rin
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
250
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
0
240
検索基盤移行時の思考
po3rin
0
4.2k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
5k
Elasticsearchを負荷から守るesguard
po3rin
0
220
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
760
eskeeperを使ったファイル定義によるindex管理
po3rin
2
430
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
70
Handling Temporal Query for Health Search with ja-timex
po3rin
3
270
Other Decks in Programming
See All in Programming
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
110
はしめてのプログラミングとロボット制御
watawatavoltage
0
290
日付と正規化
megmogmog1965
0
140
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
CSC307 Lecture 10
javiergs
PRO
0
310
[After Kotlin Fest 2024 LT Night @ Sansan] もっともっとKotlinを好きになる!K2 Compiler Pluginで遊んでみよう!
kitakkun
2
260
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
6
1.3k
DDDを志して3年経ったら「DDDの皮を被ったクリーンアーキテクチャ」になった話【デブサミ2024夏】
texmeijin
1
620
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
iOSアプリでクリップボードにコピーしたことをユーザーに伝えるちょうど良いフィードバックを探す
ski
0
100
企業向け生成AIアプリの 開発から得られた知見
takaakikakei
0
310
Featured
See All Featured
A Philosophy of Restraint
colly
200
16k
A Modern Web Designer's Workflow
chriscoyier
689
190k
How STYLIGHT went responsive
nonsquared
93
5k
Scaling GitHub
holman
458
140k
Ruby is Unlike a Banana
tanoku
96
10k
How to train your dragon (web standard)
notwaldorf
79
5.5k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
Agile that works and the tools we love
rasmusluckow
325
20k
Music & Morning Musume
bryan
43
5.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
21
2.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
248
12k
Transcript
(Pͷจࣈྻஔͱͦͷ࣮ 'VLVPLBHP +VMZ CZQPSJO (PTUSJOHSFQMBDFNFOUBOEJUTJNQMFNFOUBUJPO
pon ( @po3rin )
Introduction \
(PʹΑΔจࣈྻஔਖ਼نදݱΛൈ͍ͯ̎ͭͷํ๏͕ఏڙ͞Ε͍ͯΔ 3FQMBDFJO(P
GVOD3FQMBDF GVOD 3FQMBDFS 3FQMBDF 3FQMBDFJO(P
จࣈྻஔ͕GVOD3FQMBDFͱGVOD 3FQMBDFS 3FQMBDFͷ̎ͭ͋Δͷ͔ʁ ෦ͷΞϧΰϦζϜσʔλߏͷҧ͍͔Βͳͥͭ͋Δͷ͔Λཧղ͠Α͏ɻ 3FQMBDFJO(P
func Replace \
࣮GVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ GVOD3FQMBDF
TUSJOHT*OEFYTͷத͔ΒTVCTUS͕࠷ॳʹग़ݱ͢ΔҐஔΛฦ͢ GVOD3FQMBDF
ӈΤοδέʔεΛམͱͨ͠ίʔυɻ <>CZUFͱDPQZͱTUSJOHT*OEFYΛۦ ͍ͯ͠Δͷ͕Θ͔Δ GVOD3FQMBDF
GVOD3FQMBDF͕ಡΜͰ͍Δ TUSJOHT$PVOUTUSJOHT*OEFYʹґଘ ͍ͯ͠Δɻ GVOD3FQMBDF
ͭ·ΓGVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ GVOD3FQMBDF
TUSJOHT*OEFY#SVUFGPSDF͘͠3BCJOLBSQͰTVCTUSͷҐஔΛಛఆ͍ͯ͠Δɻ ৄ͍͠ղઆڈͷΞυϕϯτΧϨϯμʔʹߘͨ͠ͷͰੋඇʂ IUUQTQPSJODPNCMPHHPSBCJOLBSQ GVOD3FQMBDF
࣮GVOD3FQMBDFTUSJOHT*OEFY͑͋͞ΕΈཱͯΕΔɻ TUSJOHT*OEFY࠷ճݺͿ ग़ݱճͷऔಘʹݺͼग़͢ ஔॲཧ࣌ʹͦͷճݺͼग़͢ TUSJOHT*OEFY#SVUFGPSDF͘͠3BCJOLBSQΞϧΰϦζϜΛར༻͍ͯ͠Δ GVOD3FQMBDFͷ·ͱΊ
func (*Replacer) Replace \
GVOD 3FQMBDFS 3FQMBDF͕ੜ͍͑ͯΔSͰ෦࣮ΛೖΕସ͑ΔͨΊʹSFQMBDFS JOUFSGBDFͰநԽ͍ͯ͠ΔɻPMEOFXޙͰৄ֬͘͠ೝ͠·͕͢ɺஔ͍ͨ͠จࣈྻͷϖ ΞͷϦετΛอ࣋͠·͢ɻ GVOD 3FQMBDFS 3FQMBDF
3FQMBDFSJOUFSGBDFΛ࣮͢Δίϯϙ δοτܕछྨɻVTFSʹ͞ΕͨҾʹ Αͬͯग़͚͠Δ GVOD 3FQMBDFS 3FQMBDF
ஔϖΞΛ֨ೲ͢ΔPMEOFXʹ࠷దͳSFQMBDFS͕બΕΔ GVOD 3FQMBDFS 3FQMBDF
ࠓճΑΓҰൠతͳSFQMBDFSͰ͋ΔHFOFSJD3FQMBDFSΛݟ͍ͯ͘ɻ෦ͰUSJF/PEFͳΔͷ͕͋Δɻ GVOD 3FQMBDFS 3FQMBDF
BY BZ CDCD Y YZ B C Y Y
Z DCD Z (PͰTUSJOHTύοέʔδͰஔʹ͏5SJF͕࣮͞Ε͍ͯΔ 5SJFߏங $PNQMFUF,FZ /PEF 5SJF
FF B C Y Y Z DCD Z (Pͷ5SJFͰ$PNQMFUF,FZʹஔઌͷจࣈྻΛ֨ೲ͍ͯ͠Δ
$PNQMFUF,FZ /PEF 5SJF BB CC DD EE
ԼهͷྫͰ3FQMBDFͷҾͷจࣈྻʮXSJUFT(PMBOHBOE $MBOHʯΛҰจࣈͣͭ5SJFΛͬͯݕূ͍ͯ͘͠ɻ5SJFͰூͬͯ ͍ͬͯҰக͠ͳ͔ͬͨ࣍ͷ-PPL6QͰඈ͢ɻ $ ( MBOH PMBOH $ (P
5SJF
5SJFΛMPPLVQ͍ͯ͠Δ 8SJUF4USJOHͰΘ͔Δ͕ɺෳͷஔ ϖΞ͕͋ͬͯରจࣈྻશମ ͷࠪճͰऴΘΔɺ 5SJF
Ҿ࣍ୈͰSFQMBDFSΛ͍͚͍ͯΔɻ HFOFSJD3FQMBDFS෦Ͱ5SJFΛར༻͍ͯ͠Δɻ ஔϦετ͕ෳ͋ͬͯରจࣈྻͷࠪճͰࡁΉ GVOD 3FQMBDFS 3FQMBDFͷ·ͱΊ
Conclusion \
෦ߏΛΔͱԾઆཱ͕ͯΕΔ ͜͜·Ͱͷ͕ࣝ͋ΕͲͪΒΛ͑ྑ͍͔ɺͲ͏͑ྑ͍ͷ͔ͷԾઆཱ͕ͯΕ·͢ɻ ஔϖΞ͕̍ͭͳΒ5SJFΛߏங͢Δίετ͕͋ΔͷͰ3FQMBDFͰेͰͳ͍͔ʁ ஔϖΞ͕ଟ͍ͳΒจࣈྻશମͷ͕ࠪճͰ͓ΘΔ3FQMBDFSΛ͏͖Ͱ ஔରͷจࣈྻ͕͍PSଟ͍ͱ5SJFߏஙʹ͕͔͔࣌ؒΔͷͰJOJUͰݺͿ͖Ͱʁ ରจࣈྻͷ͕͞ࢧతͳΒࠪҰճͷ3FQMBDFͷํ͕ྑ͍ʁ
GVOD3FQMBDFͱGVOD 3FQMBDFS 3FQMBDFͷ෦࣮Λগ͠ղઆͨ͠ ࣅͨײ͡ͷ͕ؔ͋ͬͯ෦࣮ΛݟΔͱશવҧ͏ɻ ෦ͷΞϧΰϦζϜσʔλߏ͕Θ͔ΔͱύϑΥʔϚϯεଌఆͷ݁Ռͷೲಘ͕ มΘΔɻ ·ͱΊ
Appendix \
QPOͷߟ͑ΔίʔυϦʔσΟϯάͷ5JQT ·ͣΤοδέʔεແࢹ ෳࡶͳ෦ؔ(P1MBZHSPVOEʹίϐϖͯ֓͠ܗΛัΒ͑Δ