Go言語のデータ構造とアルゴリズム
Go言語が用意しているのはスライスとマップだけで、残りはあなたに任されています。スタック型もキュー型もセット型もなく、container/heapのヒープも、heap.Interfaceを実装するまでは何もしてくれません。このパスでは、すべての構造をGo言語の構造体とポインタで作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。
377 レッスン228 チャレンジ702 クイズの問題
- 初心者向け
AIによるコーディングサポート
実践的なインタラクティブレッスン
全レッスンに音声ナレーション付き
知識を確かめるクイズ
パス全体で23枚の無料修了証
Go言語のDSA、ステップごとに
各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをGo言語で開きます。まだGo言語で教えていない3つのコースは、ステップの後にまとめて載せています。
- 1ステップ15件のコース(順番どおり)
- 2ステップ2
データ構造シリーズ パート2
このステップを始める開始双方向連結リスト、ヒープと優先度付きキュー、トライ木、グラフ、そして自己平衡するAVL木。最初の双方向連結リストには、container/listという既製品があります。このステップを終えると、ヒープを自分で作ったのでheap.Interfaceの5つのメソッドの意味がわかり、Go言語が一度も用意しなかった平衡木も自分で作れるようになります。開始5件のコース(順番どおり) - 3ステップ3
ソートアルゴリズム
このステップを始める開始バブル、選択、挿入、マージ、クイック、ヒープ、計数、基数ソートを、Go言語で書き、可視化ツールで眺めます。sort.SliceはGo 1.19からpattern-defeating quicksortを使っていて、slices.Sortも同じです。どちらも安定ではなく、だからこそsort.SliceStableがあります。このステップを終えれば、それらの言葉がそれぞれ何を意味するのかがわかります。開始8件のコース(順番どおり) - 4ステップ4
再帰的な考え方専用ページ
このステップを始める開始Go言語での再帰のチャレンジ問題。Go言語ではゴルーチンのスタックが小さく始まって必要に応じて伸びるので、数千回の深さの再帰でもオーバーフローすることはめったにありません。それでもベースケースが抜けていれば、いずれ上限(64ビットシステムではデフォルトで1GBのスタック)に達し、遅いプログラムではなく致命的エラーで終わります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ - 5ステップ5
グラフアルゴリズム
このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でGo言語で学びます。Go言語でのダイクストラ法の優先度付きキューは、自分で定義したスライス型の上のcontainer/heap、つまりインターフェースの向こうにあるステップ2のヒープです。開始7件のコース(順番どおり) - 6ステップ6
面接練習
このステップを始める開始10本の面接チャレンジパックと2つのコーディング問題集をGo言語で。初見の問題を、テストケースで採点されながら、解説なしで解きます。使うのは、スライスとマップ、そしてここまでの道のりで作った構造です。開始12件のコース(順番どおり)- コーディング面接チャレンジ - パック I3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック II3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック III3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック IV3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック V3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック VI3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック VII3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック VIII3 レッスン3 チャレンジ
- コーディング面接チャレンジ - パック IX3 レッスン3 チャレンジ
- コーディング面接チャレンジ - X3 レッスン3 チャレンジ
- コーディング問題集32 レッスン31 チャレンジ
- コーディング問題集:Vol. 225 レッスン24 チャレンジ
Learn by Doing
Write real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.
Build Your Coding Streak
Stay consistent and watch your progress grow! Track your daily coding habit, protect your streak with freeze days, and earn rewards for showing up every day.
12 days streak
Return tomorrow to keep your streak!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Double or Nothing
Day 5 of 7
Streak Freeze
2 left
Code Anywhere, Anytime
Take your coding journey on the go! No setup, no downloads - just open and start coding. Available on iOS, Android and Web with 4.9 star ratings.
You're Not Alone in This
Compete on global leaderboards, invite friends to earn rewards, and celebrate each other's wins. Coding is better with friends!
Every way to learn
Read, listen, test yourself, ask the AI, or look up anything you've already covered. Every lesson meets you where you are.
A variable is a named container that stores a value you can reference later in your program.
In Python, you create one by writing the name, an equals sign, then the value you want to store.
The value can change over time - reassigning the name simply points it to a new value.
Prove Your Skills
Earn certificates for every course you complete. Add them to your LinkedIn profile and resume to showcase your coding expertise to employers.
Go言語のDSAをCoddyで学ぶ理由
- Go言語があなたに任せている構造。Go言語に組み込まれているのはスライスとマップまでです。スタックは
appendで追加して再スライスするスライス、セットはmap[T]struct{}で、キュー型や木はまったくありません。足りないものを書く方法と、スライスの各操作のコストを知っていることは、Go言語を知ることの一部です。 - 構造体とポインタで、何も隠れていない。Go言語にはクラスがありません。ノードは次のノードへのポインタを持つ
structで、メソッドは型に結びつけて定義します。連結リストや木は見たとおりの姿をしていて、ジェネリクス(Go 1.18以降)でどんな要素型にも再利用でき、ガベージコレクタがあるのでmallocやfreeを管理する必要もありません。 - パスのほぼすべてをGo言語で。データ構造、ソート、グラフアルゴリズム、再帰のチャレンジ、面接パックは、すべてGo言語で教えています。別の言語で教える3つのコースは、それぞれへのリンクとともにステップの後にまとめて載せています。動的計画法とPython面接シリーズ(Python)、そしてビット演算(C++)です。ビット演算はGo言語からも自然に読めます。Go言語にはC++の
&、|、^、<<、>>があり、NOTは^xと書きます。 - 面接と同じ形で採点。どのレッスンもテストケースで確認されるGo言語のチャレンジで終わり、失敗したときはBugsyがあなたのコードを読み、答えを教えずに修正の方向へ導きます。ほとんどのコースで無料の修了証が発行され、それぞれ専用URLで検証できます。
Go言語でのDSA学習についてよくある質問
Go言語はデータ構造とアルゴリズムの学習に向いていますか?
container/list、container/heap以外の構造は自分で書くことになりますが、学習のパスではそれこそが目的です。またGo言語は、DockerやKubernetesを含め、今日のクラウドインフラの多くを動かしているので、バックエンドの職種では面接で使う言語として自然な選択です。Go言語のどの型とパッケージが、どのデータ構造にあたりますか?
appendと再スライスを使えばスタックにもなります。マップはハッシュテーブルで、map[T]struct{}が慣用的なセットです。container/listは双方向連結リストで、container/heapはheap.Interfaceを実装した任意の型の上で二分ヒープを動かします。キュー型、木、トライ木、グラフはないので、それらはステップ1と2で自分で作ります。Go言語のcontainer/heapはどう動くのですか?
container/heapはどう動くのですか?heap.Interfaceを実装します。sort.Interface由来のLen、Less、Swapに加えて、スライスの末尾に追加するだけ、末尾から取り除くだけのPushとPopです。そのうえで、自分のメソッドではなくパッケージ関数のheap.Pushとheap.Popを呼ぶと、順序を保つために要素を上下に移動させる処理をそれらが行ってくれます。自分でヒープを書いたことがないうちは奇妙に見えますが、それを書くのがステップ2です。Go言語のマップをrangeで回すと、なぜ毎回順序が変わるのですか?
このパスで、Go言語で教えていないコースはどれですか?
&^で、右オペランドで立っているすべてのビットを、左オペランドでクリアします。