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言語】map
Search
Tomoki Ota
August 16, 2024
Programming
0
54
【Go言語】map
mapについて解説しています
Tomoki Ota
August 16, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
110
アーキテクチャとビジネスロジック
tomo1227
0
110
【Go言語】テスト
tomo1227
0
66
【Go言語】クロージャ
tomo1227
0
290
【Go言語】イテレータ
tomo1227
0
82
【Go言語】エラーハンドリング
tomo1227
0
68
AIに淘汰されないようにするには?
tomo1227
0
72
【Go言語】range
tomo1227
0
78
【Go言語】break
tomo1227
0
71
Other Decks in Programming
See All in Programming
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
1k
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.4k
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
140
Patterns of Patterns
denyspoltorak
0
460
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
760
TestingOsaka6_Ozono
o3
0
270
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
190
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
320
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
160
AtCoder Conference 2025
shindannin
0
930
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
340
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Rails Girls Zürich Keynote
gr2m
95
14k
Unsuck your backbone
ammeep
671
58k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
440
The Curious Case for Waylosing
cassininazir
0
210
My Coaching Mixtape
mlcsv
0
23
Agile that works and the tools we love
rasmusluckow
331
21k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
120
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
270
Transcript
Tomoki Ota ʲGoݴޠʳmap
mapͱ? 2
mapͱʁ 3
mapͱʁ 4
mapͱʁ GoͰɺmapϋογϡςʔϒϧͷσʔλߏʹجͮ͘ 5
mapͱʁ ෦తʹϋογϡςʔϒϧɺόέοτͷϙΠϯλͷྻ ֤όέοτΩʔͱͷϖΞΛ8ͭ࣋ͭ 6
mapͷϋογϡςʔϒϧ map[string]intͷόέοτ0ʹͨ͠ϋογϡςʔϒϧදݱͷྫ 7 hash(“two") = 0
ཁૉͷૠೖ 8 ผͷཁૉͷ map[string]intͷόέοτ0ʹͨ͠ϋογϡςʔϒϧදݱͷྫ
ཁૉͷૠೖ(όέοτ͕͍ͬͺ͍ͷͱ͖) 9
ಡΈग़͠ɺߋ৽ɺআͷܭࢉྔ 10 Λόέοτͷ૯ͱ͢Δͱɺ (σϑΥϧτ1ɺΦʔόϑϩʔ࣌ෳͷόέοτ) p ࠷ѱ࣌ؒܭࢉྔ ͱͳΔ O(p)
ॳظԽ
ॳظԽ
100ສݸͷཁૉͷՃ Ϛοϓ͕ࣗಈͰ֦େͯ͠ɺόέοτΛอ࣋͢Δྻ͕2ഒͱͳΔ
Ϛοϓ͕֦େ͢Δ݅ ྻͷཁૉ͝ͱʹόέοτ͕อ࣋͢Δཁૉͷฏۉ(Load Factor)͕ ͋Δఆ(ݱঢ়6.5ɻ80%)ΑΓେ͖͍ͱ͖ Φʔόʔϑϩʔ͍ͯ͠Δྻͷཁૉ͕ͱͯେ͖͍ͱ͖
Ωʔͷૠೖͷܭࢉྔ 15 Ϛοϓ͕֦େ͢Δͱ͖ɺશͯͷΩʔ͕શͯͷόέοτ࠶ஔ͢Δɻ ΛϚοϓͷཁૉͷ૯ͱ͢Δͱ n ࠷ѱ࣌ؒܭࢉྔ ͱͳΔ O(n)
ॳظԽ 16 makeͰॳظԽ͢Δ
ॳظԽ 17
ॳظԽ 18 αΠζnΛࢦఆ͢ΔͱɺGoϥϯλΠϜʹগͳ͘ͱnݸͷཁૉΛ อ࣋Ͱ͖ΔϚοϓΛׂΓͯΔΑ͏ʹཁٻ͢Δɻ ❌ ࠷େnݸͷཁૉΛ࣋ͭϚοϓΛ࡞Δ
mapͱϝϞϦʔϦʔΫ
mapͱϝϞϦʔϦʔΫ
mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓͯΔ 2. 100ສݸͷཁૉΛՃ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ
mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓͯΔ 2. 100ສݸͷཁૉΛՃ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ
mapͱϝϞϦʔϦʔΫ 1. ۭϚοϓΛׂΓͯΔ 2. 100ສݸͷཁૉΛՃ͢Δ 3. શͯͷཁૉΛऔΓআ͍ͯɺGCΛ࣮ߦͤ͞Δ 4. ֤εςοϓͷޙɺώʔϓͷେ͖͞(Mb)Λදࣔ
GoͷϚοϓruntime.hmapߏମͷϙΠϯλɻ ͜ͷߏମʹɺϚοϓͷόέοτΛࣔ͢BϑΟʔϧυͳͲෳͷϑΟʔϧυ͕͋Δɻ mapͱϝϞϦʔϦʔΫ
mapͱϝϞϦʔϦʔΫ
100ສݸͷཁૉΛՃ͢Δ → Bͷ18ɺ όέοτͱͳΔ 100ສݸͷཁૉΛऔΓআ͘ → B18ͷ··ɻΏ͑ʹɺϚοϓ·ͩಉ͡ͷόέοτΛอ࣋͢Δ 218 = 262144
mapͱϝϞϦʔϦʔΫ
mapͱϝϞϦʔϦʔΫ 1࣌ؒͷσʔλΛอଘ͢Δͱ͢ΔɻେنͳϓϩϞʔγϣϯΛߦ ͏߹ɺ1࣌ؒޙʹɺඦສਓͷ͓٬༷͕γεςϜʹଓ͢Δ͔ ͠Εͳ͍ɻ͔͠͠ɺϓϩϞʔγϣϯͷޙɺϐʔΫ࣌ͱಉ ͡ͷόέοτ͕Ϛοϓʹอ࣋͞Εͨ··ʹͳΔɻ͜ͷΑ͏ͳγ φϦΦͷ߹ɺϝϞϦͷফඅྔ͕େ෯ʹݮগͤͣɺϝϞϦͷফඅ͕ ଟ͘ͳΔɻ
ݱࡏͷϚοϓͷίϐʔΛఆظతʹ࠶࡞͢Δ mapܕ͕ྻͷϙΠϯλΛอ࣋͢ΔΑ͏ʹมߋ͢Δ ख࡞ۀͰ࠶ىಈͨ͘͠ͳ͍߹
͓·͚
͓·͚ όέοτʹ8ݸ·Ͱ֦େ͞Ε͍ͯΔͱ͜Ζʹɺ্ͷΑ͏ʹΞαΠϯ͢Δ߹Λߟ͑Δ
͓·͚
͓·͚
͓·͚ 1. ϋογϡͷੜ 2. ֨ೲ͢Δόέοτͷબ 3. tophashͷੜ 4. tophashΛར༻ͯ͠ॻ͖ࠐΉ͖ϝϞϦҐஔΛಛఆ 5.
৽͍͠όέοτͷՃͱνΣʔϯ
ϋογϡͷੜ
֨ೲ͢Δόέοτͷબ
tophashͷੜ
tophashͷੜ
tophashΛར༻ͯ͠ॻ͖ࠐΉ͖ϝϞϦҐஔΛಛఆ
৽͍͠όέοτͷՃͱνΣʔϯ