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
400
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
300
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
1
310
検索基盤移行時の思考
po3rin
0
4.2k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
5.7k
Elasticsearchを負荷から守るesguard
po3rin
0
260
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
860
eskeeperを使ったファイル定義によるindex管理
po3rin
2
480
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
96
Handling Temporal Query for Health Search with ja-timex
po3rin
3
320
Other Decks in Programming
See All in Programming
Writing documentation can be fun with plugin system
okuramasafumi
0
120
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
ARA Ansible for the teams
kksat
0
150
CI改善もDatadogとともに
taumu
0
120
ソフトウェアエンジニアの成長
masuda220
PRO
11
1.6k
GAEログのコスト削減
mot_techtalk
0
120
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
330
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
100
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
320
定理証明プラットフォーム lapisla.net
abap34
1
1.8k
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
4
390
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
550
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
For a Future-Friendly Web
brad_frost
176
9.5k
Raft: Consensus for Rubyists
vanstee
137
6.8k
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ʹίϐϖͯ֓͠ܗΛัΒ͑Δ