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
36
【Go言語】map
mapについて解説しています
Tomoki Ota
August 16, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
58
アーキテクチャとビジネスロジック
tomo1227
0
66
【Go言語】テスト
tomo1227
0
37
【Go言語】クロージャ
tomo1227
0
220
【Go言語】イテレータ
tomo1227
0
44
【Go言語】エラーハンドリング
tomo1227
0
44
AIに淘汰されないようにするには?
tomo1227
0
39
【Go言語】range
tomo1227
0
36
【Go言語】break
tomo1227
0
45
Other Decks in Programming
See All in Programming
SpringBootにおけるオブザーバビリティのなにか
irof
1
880
DevDay2025-OracleDatabase-kernel-addressing-history
oracle4engineer
PRO
7
1.6k
Perlで痩せる
yuukis
1
650
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
470
『Python → TypeScript』オンボーディング奮闘記
takumi_tatsuno
1
130
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
240
Design Pressure
hynek
0
1.4k
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
0
160
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
230
Language Server と喋ろう – TSKaigi 2025
pizzacat83
2
660
Practical Domain-Driven Design - Workshop at NDC 2025
mufrid
0
130
iOSアプリ開発もLLMで自動運転する
hiragram
6
2.1k
Featured
See All Featured
Scaling GitHub
holman
459
140k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
1
77
Measuring & Analyzing Core Web Vitals
bluesmoon
7
460
What's in a price? How to price your products and services
michaelherold
245
12k
Rails Girls Zürich Keynote
gr2m
94
13k
How GitHub (no longer) Works
holman
314
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Practical Orchestrator
shlominoach
188
11k
A designer walks into a library…
pauljervisheath
205
24k
Code Review Best Practice
trishagee
68
18k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Art, The Web, and Tiny UX
lynnandtonic
298
21k
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Λར༻ͯ͠ॻ͖ࠐΉ͖ϝϞϦҐஔΛಛఆ
৽͍͠όέοτͷՃͱνΣʔϯ