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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tomoki Ota
July 05, 2024
Programming
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【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
91
【Go言語】クロージャ
tomo1227
0
330
【Go言語】イテレータ
tomo1227
0
110
【Go言語】エラーハンドリング
tomo1227
0
92
AIに淘汰されないようにするには?
tomo1227
0
94
【Go言語】range
tomo1227
0
100
【Go言語】break
tomo1227
0
95
Other Decks in Programming
See All in Programming
Webフレームワークの ベンチマークについて
yusukebe
0
180
AI 輔助遺留系統現代化的經驗分享
jame2408
1
970
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
610
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
6.5k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
130
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
Oxcを導入して開発体験が向上した話
yug1224
4
340
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.2k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
740
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.5k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
740
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
920
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
620
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
340
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Crafting Experiences
bethany
1
190
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
How STYLIGHT went responsive
nonsquared
100
6.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
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