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
Tomoki Ota
July 05, 2024
Programming
1
1.3k
【Go言語】スライス
Goのスライスについてまとめました。
【Qiita】
https://qiita.com/twrcd1227/items/989d8d553fc6913f01f3
Tomoki Ota
July 05, 2024
Tweet
Share
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
89
アーキテクチャとビジネスロジック
tomo1227
0
88
【Go言語】テスト
tomo1227
0
51
【Go言語】クロージャ
tomo1227
0
250
【Go言語】イテレータ
tomo1227
0
67
【Go言語】エラーハンドリング
tomo1227
0
56
AIに淘汰されないようにするには?
tomo1227
0
57
【Go言語】range
tomo1227
0
61
【Go言語】break
tomo1227
0
60
Other Decks in Programming
See All in Programming
アセットのコンパイルについて
ojun9
0
120
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
320
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
print("Hello, World")
eddie
2
530
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
290
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
140
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
520
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
850
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
490
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
testingを眺める
matumoto
1
140
Featured
See All Featured
Embracing the Ebb and Flow
colly
87
4.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Designing for humans not robots
tammielis
253
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
4 Signs Your Business is Dying
shpigford
184
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Practical Orchestrator
shlominoach
190
11k
Transcript
Tomoki Ota ʲGOݴޠʳεϥΠε
͍͖ͳΓͰ͕͢ɺͰ͢
࣮ߦ͢ΔͱͲ͏ͳΔͰ͠ΐ͏
͑ɾɾɾ
slice1 = [0 1 2 3 4 5 6 7
8 9]ʹͳΒͳ͍
εϥΠεͷߏ 1. ྻΛ࡞͢Δɻ(ྻʹΞΫηεͰ͖ͳ͍) 2. ྻΛεϥΠε͢ΔͱɺGoͦͷطଘͷྻͷϙΠϯλʔΛऔಘ͢Δ 6
• ྻͷϙΠϯλ : ݩͱͳΔྻͷϙΠϯλɻεϥΠε ͷݩͷྻͷ࠷ॳͷཁૉΛࢦ͢ • εϥΠεͷ͞ • ༰ྔ :
ݩͱͳΔྻͷαΠζ εϥΠεͷߏ 7
͠ͱϙΠϯλ͠ • ͠ : ίϐʔͯ͠ɺத͕͍͠৽͍͠ͷΛ࡞͢Δ • ϙΠϯλ͠ : ϙΠϯλΛ͢ɻϙΠϯλ͕ࢀর͍ͯ͠Δ͕มԽ͢Εɺ͕มΘΔ ※
Goʹࢀর͠ଘࡏ͠ͳ͍ 8
͠ͱϙΠϯλ͠ •Sࢀর͠ •s[0]ϙΠϯλ͠ 9
CAPACITYʹΑΔεϥΠεͷಈ࡞ͷҧ͍ 1. capacity͕Γͳ͍ͱ͖ 2. capacity͕Γͳ͍ͱ͖(ؔ) 3. capacity͕ΓΔͱ͖ 4. capacity͕ΓΔͱ͖(ؔ) CapacityʹΑͬͯಈ࡞͕มΘΔʂ
10
CAPACITY͕Γͳ͍ͱ͖ https://go.dev/play/p/EkdgSBKwRHU
CAPACITY͕Γͳ͍ͱ͖(ؔ) https://go.dev/play/p/EaxY8RoyRjO
CAPACITY͕ΓΔͱ͖ https://go.dev/play/p/my-Z78xCeK7
CAPACITY͕ΓΔͱ͖(ؔ) https://go.dev/play/p/ntq4D75py2
εϥΠεԽ https://go.dev/play/p/ntq4D75py2 ྻɺ͘͠εϥΠε͔ΒεϥΠεΛ࡞͢Δ͜ͱ
εϥΠεԽ
εϥΠεԽ
εϥΠεԽ
εϥΠεԽ
GC εϥΠεͷ༰ྔΛ͑ͨͱ͖ɺ৽ͨͳྻΛ࡞͠·͕͢ɺ ࢀর͞Εͳ͘ͳͬͨྻGC(ΨϕʔδίϨΫλ)ʹΑͬͯղ์͞ΕΔɻ (ώʔϓ্ʹ͋Δ߹ͷΈ) 20
εϥΠεͷॳظԽͷϕετϓϥΫςΟε makeͰ͋Β͔͡ΊεϥΠεΛॳظԽ͢Δͱ͖ʹ ͞ͱ༰ྔΛলུ͢ΔͷNG 21
εϥΠεͷॳظԽͷϕετϓϥΫςΟε ࢀরݩͷྻͷ༰ྔΛ͑Δͨͼʹɺ৽͍͠ྻ(ཁૉ͕2ഒͷྻɻ ཁૉ͕1024Λ͑Δ߹25%ͣͭ૿Ճ)͕࡞ΒΕΔɻ 0→1→2→4→8→16→32→64→128→256→512→848→1280ͷΑ͏ʹ߹ܭ13ݸͷྻ͕࡞͞ΕΔ 22
εϥΠεͷॳظԽͷϕετϓϥΫςΟε ࠷ॳʹ༰ྔΛࢦఆͯ͋͛͠Δ 23
εϥΠεͷॳظԽͷϕετϓϥΫςΟε ࠷ॳʹ͞Λࢦఆͯ͠OK 24
εϥΠεͷॳظԽͷϕετϓϥΫςΟε ύϑΥʔϚϯε͞ɻ ༰ྔΛࢦఆͯ͠append͢Δํ๏ͷํ͕Մಡੑ͕ߴ͘·͍͠ 25
nilεϥΠε V.S. ۭεϥΠε ͕̌͞ͳΒɺεϥΠεۭ nilͱಉͳΒεϥΠεnil 26
nilεϥΠε V.S. ۭεϥΠε 27
nilεϥΠε V.S. ۭεϥΠε 28
nilεϥΠε V.S. ۭεϥΠε 29
nilεϥΠε V.S. ۭεϥΠε nilεϥΠεۭεϥΠεͷҰ෦Ͱ͋Δɻ εϥΠεʹཁૉؚ͕·Ε͍ͯΔ͔Ͳ͏͔len(0)Ͱผ͢Δɻ 30
nilεϥΠε V.S. ۭεϥΠε nilεϥΠεͱҧ͍ɺۭεϥΠεׂΓ͕ͯൃੜ͢ΔͷͰɺ ͕ؔεϥΠεΛฦ͢߹nilεϥΠεΛฦ͢ํ͕Α͍ɻ 31
nilεϥΠε V.S. ۭεϥΠε γϯλοΫεγϡΨʔͱͯ͠͏߹ɺ 2ͭͷ[]int(nil)Λ͏ํ͕͍͍ɻ 32
nilεϥΠε V.S. ۭεϥΠε slice3 := []int{} ॳظཁૉ͕͋Δ߹ʹΘΕΔॻ͖ํ e.g. []int{1,2,3} 33
εϥΠεͷcopy CopyɺίϐʔݩͷεϥΠεɺίϐʔઌͷεϥΠεͷཁૉ͕গͳ͍ํʹ͞Λ߹ΘͤΔ dstͷ͕͞0ɺsliceͷ͕͞3ͳͷͰɺ࠷ऴతʹdst0ʹͳΔ μϝͳྫ 34
εϥΠεͷcopy ίϐʔઌͷεϥΠεͷ͞ΛલͬͯɺίϐʔݩͷεϥΠεͱಉ͡͞ʹઃఆ͓ͯ͘͠ɻ ղܾࡦ1 35
εϥΠεͷcopy appendΛ༻͢Δ ղܾࡦ2 36
εϥΠεͷcopy slices.Clone() Λ༻͢Δ ղܾࡦ3 37
appendͷ෭࡞༻ s1ʹมߋ͕Өڹ͞Εͯ͠·͏ɻ 38
appendͷ෭࡞༻ 39
appendͷ෭࡞༻ ղܾࡦ1 ࣄલʹίϐʔ͓ͯ͘͠ɻ ແବͳίϐʔ͕ൃੜ͢Δɻ 40
appendͷ෭࡞༻ ղܾࡦ2 શεϥΠεࣜ s[low:high:max] Λ༻͢Δɻ 41
appendͷ෭࡞༻ ղܾࡦ2 42
όοϑΝͱͯ͠ͷεϥΠε 43
όοϑΝͱͯ͠ͷεϥΠε 44
εϥΠεͱϝϞϦϦʔΫ ͜ͷίʔυΛ࣮ߦͨ͠ͱ͖ʹɺ1GBͷϝϞϦ͕ফඅ͞Ε·͢ɻ 10όΠτͷϝοηʔδΛ1000ճड͚औͬͯ ࠷ॳͷ5όΠτΛอଘ͢Δίʔυ 45
εϥΠεͱϝϞϦϦʔΫ 46
ͷεϥΠε v.s. ϙΠϯλͷεϥΠε []T͔[]*TͷͲ͕͍͍ͬͪͷ͔݁Λ͍͏ͱ ΄ͱΜͲͷ߹[]Tͷํ͕༏Ε͍ͯΔɻ 47
εϥΠεͱϝϞϦϦʔΫ ղܾࡦ messageΛεϥΠεԽ͢ΔͷͰͳ͘ɺεϥΠεͷίϐʔΛ࡞͢Δ 48
εϥΠεύοέʔδ v1.21Ҏ্Ͱslices - Go PackagesΛ͑Δ ͨͩ͠ɺv1.21ͱv1.22Ҏ্ڍಈ͕ҟͳΔ 49
DELETE v1.22 v1.21 50
DELETE append copy appendͷgc 51
52