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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomoki Ota
July 05, 2024
Programming
1.6k
1
Share
【Go言語】スライス
Goのスライスについてまとめました。
【Qiita】
https://qiita.com/twrcd1227/items/989d8d553fc6913f01f3
Tomoki Ota
July 05, 2024
More Decks by Tomoki Ota
See All by Tomoki Ota
アーキテクチャの価値
tomo1227
0
120
アーキテクチャとビジネスロジック
tomo1227
0
120
【Go言語】テスト
tomo1227
0
80
【Go言語】クロージャ
tomo1227
0
310
【Go言語】イテレータ
tomo1227
0
100
【Go言語】エラーハンドリング
tomo1227
0
83
AIに淘汰されないようにするには?
tomo1227
0
82
【Go言語】range
tomo1227
0
91
【Go言語】break
tomo1227
0
82
Other Decks in Programming
See All in Programming
Tamach-sre-3_ANDPAD-shimaison93
mane12yurks38
0
240
「速くなった気がする」をデータで疑う
senleaf24
0
120
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
170
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
180
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
290
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
200
ファインチューニングせずメインコンペを解く方法
pokutuna
0
250
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
580
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
480
Java 21/25 Virtual Threads 소개
debop
0
320
Ruby and LLM Ecosystem 2nd
koic
1
1.4k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Become a Pro
speakerdeck
PRO
31
5.9k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
Being A Developer After 40
akosma
91
590k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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