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
Gunosy.go #2 container
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoshi
September 25, 2014
Programming
74
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gunosy.go #2 container
go lang study
Satoshi
September 25, 2014
More Decks by Satoshi
See All by Satoshi
高速な広告配信サーバの作り方のコツ
satoshi03
3
520
スケールしない広告サーバの作り方
satoshi03
0
250
Gunosy AdServerのデータ周りの話
satoshi03
2
3k
フルスクラッチで書いたアドサーバの開発・運用史
satoshi03
2
4.4k
Gunosy Go Lang Study #6 net net/http net/url
satoshi03
0
150
Other Decks in Programming
See All in Programming
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
170
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
190
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
dRuby over BLE
makicamel
2
390
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
320
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
170
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
7.8k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
170
New "Type" system on PicoRuby
pocke
1
1k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
200
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
Are puppies a ranking factor?
jonoalderson
1
3.6k
Statistics for Hackers
jakevdp
799
230k
The SEO identity crisis: Don't let AI make you average
varn
0
500
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
Leo the Paperboy
mayatellez
7
1.9k
For a Future-Friendly Web
brad_frost
183
10k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
The Curse of the Amulet
leimatthew05
2
13k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Transcript
Gunosy.go #2 container Gunosy Inc.
自己紹介 • 印南 聡志 (いんなみ さとし) • 6月にGunosyに入社
• Java/Ruby … 最近 Python/Go 始めました
Container • h?p://golang.org/pkg/container/ • データのまとまりを扱うためのパッケージ – List : 双方向連結リスト
– Ring : 循環リスト – Heap : 二分木構造リスト(用Interface)
List • 双方向連結リスト – 各エレメントが前後のエレメントへのリンク (ポインタ)を所持 – インサートは高速だがインデックス参照は不可 – ジェネリクスの機能はなし
• 型アサーションを使う必要がある Element value Element value Element value root next *Element prev *Element next *Element prev *Element
List – type Element • type Element – 双方向リストの要素(エレメント)、格納するデータ、
前後のリストのリンクを持つ – Value interface{} – func (*Element) Next – func (*Element) Prev
List – type List • type List
func New() *List func (l *List) Back() *Element func (l *List) Front() *Element func (l *List) Init() *List func (l *List) InsertATer(v interface{}, mark *Element) *Element func (l *List) InsertBefore(v interface{}, mark *Element) *Element func (l *List) Len() int func (l *List) MoveATer(e, mark *Element) func (l *List) MoveBefore(e, mark *Element) func (l *List) MoveToBack(e *Element) func (l *List) MoveToFront(e *Element) func (l *List) PushBack(v interface{}) *Element func (l *List) PushBackList(other *List) func (l *List) PushFront(v interface{}) *Element func (l *List) PushFrontList(other *List) func (l *List) Remove(e *Element) interface{}
List h?p://play.golang.org/p/7GnwWoC-‐_s 出力: 1 2 3
4
Ring • 循環リスト • どのリング要素のポインタもリング全体への参照と して使用可能 • (Javaのような)ジェネリクスの機能はなし
• 型アサー(ry prev *Ring next *Ring prev *Ring prev *Ring next *Ring next *Ring
Ring – type Ring func New(n int) *Ring
func (r *Ring) Do(f func(interface{})) func (r *Ring) Len() int func (r *Ring) Link(s *Ring) *Ring func (r *Ring) Move(n int) *Ring func (r *Ring) Next() *Ring func (r *Ring) Prev() *Ring func (r *Ring) Unlink(n int) *Ring
Ring h?p://play.golang.org/p/2SqEm4PGHT 出力: 要素数: 10 0 1
2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Heap • 二分木構造 • 取り出される値が常に最小になる – Init, Fix, Pop,
Push, Remove実行時にmin-‐heapが 走る • List, Ringとは異なり自身で定義した配列型に heap.interfaceを実装
Heap • 実装する必要のある関数 – func(Interface) Pop() – func(Interface) Push()
– func (Interface) Len() – func (Interface) Less() – func (Interface) Swap() デモ:h?p://play.golang.org/p/QIxb4gHIkW
まとめ • Container – データのまとまりを便利に扱うためのパッケージ • List : 双方向連結リスト
• Ring : 循環リスト • Heap : 2分木構造 – インサートが高速 – インデックスでの要素指定ができない