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
350
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
240
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
0
210
検索基盤移行時の思考
po3rin
0
4.1k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
4.7k
Elasticsearchを負荷から守るesguard
po3rin
0
200
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
710
eskeeperを使ったファイル定義によるindex管理
po3rin
2
390
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
62
Handling Temporal Query for Health Search with ja-timex
po3rin
3
240
Other Decks in Programming
See All in Programming
2 週間で Twitter Bot を作ってみた
contour_gara
0
770
Let's learn code review
riofujimon
2
580
見た目から始める生産性向上
ikumatadokoro
10
1.4k
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
Ruby Pattern Matching
bkuhlmann
0
930
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
9
4.2k
PHPはいつから死んでいるかの調査
chiroruxx
2
420
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
1
1.3k
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
140
Try creating your own orderedmap
kazamori
1
190
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1k
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
120
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
33
6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
21
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Optimizing for Happiness
mojombo
370
69k
Visualization
eitanlees
137
14k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
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ʹίϐϖͯ֓͠ܗΛัΒ͑Δ