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.2k
【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
68
アーキテクチャとビジネスロジック
tomo1227
0
73
【Go言語】テスト
tomo1227
0
42
【Go言語】クロージャ
tomo1227
0
230
【Go言語】イテレータ
tomo1227
0
53
【Go言語】エラーハンドリング
tomo1227
0
50
AIに淘汰されないようにするには?
tomo1227
0
45
【Go言語】range
tomo1227
0
45
【Go言語】break
tomo1227
0
52
Other Decks in Programming
See All in Programming
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
930
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
1.2k
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
870
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
200
GraphRAGの仕組みまるわかり
tosuri13
8
500
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.1k
A2A プロトコルを試してみる
azukiazusa1
2
1.2k
XP, Testing and ninja testing
m_seki
3
210
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
NPOでのDevinの活用
codeforeveryone
0
440
Featured
See All Featured
Bash Introduction
62gerente
614
210k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
How STYLIGHT went responsive
nonsquared
100
5.6k
Embracing the Ebb and Flow
colly
86
4.7k
Balancing Empowerment & Direction
lara
1
380
It's Worth the Effort
3n
185
28k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Pragmatic Product Professional
lauravandoore
35
6.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
What's in a price? How to price your products and services
michaelherold
246
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
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