Go言語のデータ構造とアルゴリズム
Go言語が用意しているのはスライスとマップだけで、残りはあなたに任されています。スタック型もキュー型もセット型もなく、container/heapのヒープも、heap.Interfaceを実装するまでは何もしてくれません。このパスでは、すべての構造をGo言語の構造体とポインタで作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。
377 レッスン284 チャレンジ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件のコース(順番どおり)- バブルソート11 レッスン10 チャレンジ
- 選択ソート - DSAシリーズ9 レッスン4 チャレンジ54 問題1 プロジェクト
- 挿入ソート - DSAシリーズ9 レッスン4 チャレンジ1 プロジェクト
- マージソート - DSAシリーズ9 レッスン4 チャレンジ52 問題1 プロジェクト
- クイックソート - DSAシリーズ9 レッスン4 チャレンジ52 問題1 プロジェクト
- ヒープソート - DSAシリーズ9 レッスン4 チャレンジ54 問題1 プロジェクト
- カウンティングソート - DSAシリーズ9 レッスン4 チャレンジ52 問題1 プロジェクト
- Radix Sort - DSAシリーズ9 レッスン4 チャレンジ55 問題1 プロジェクト
- 4ステップ4
再帰的な考え方専用ページ
このステップを始める開始Go言語での再帰のチャレンジ問題。Go言語ではゴルーチンのスタックが小さく始まって必要に応じて伸びるので、数千回の深さの再帰でもオーバーフローすることはめったにありません。それでもベースケースが抜けていれば、いずれ上限(64ビットシステムではデフォルトで1GBのスタック)に達し、遅いプログラムではなく致命的エラーで終わります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ - 5ステップ5
グラフアルゴリズム
このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でGo言語で学びます。Go言語でのダイクストラ法の優先度付きキューは、自分で定義したスライス型の上のcontainer/heap、つまりインターフェースの向こうにあるステップ2のヒープです。開始7件のコース(順番どおり)- 幅優先探索 - グラフアルゴリズム9 レッスン4 チャレンジ54 問題1 プロジェクト
- 深さ優先探索 - グラフアルゴリズム9 レッスン4 チャレンジ54 問題1 プロジェクト
- ダイクストラ法 - グラフアルゴリズム9 レッスン4 チャレンジ54 問題1 プロジェクト
- ベルマン–フォード法 - グラフアルゴリズム9 レッスン4 チャレンジ54 問題1 プロジェクト
- トポロジカルソート - グラフアルゴリズム9 レッスン4 チャレンジ55 問題1 プロジェクト
- クラスカル法 - グラフアルゴリズム9 レッスン4 チャレンジ57 問題1 プロジェクト
- プリム法 - グラフアルゴリズム9 レッスン4 チャレンジ55 問題1 プロジェクト
- 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 チャレンジ
実践で学ぶ
実際のコードを書き、データベースをクエリし、ウェブサイトを構築し、AIプロンプトをマスターしましょう。インタラクティブなレッスンで現代の開発者に必要なすべてのスキルを網羅しています。
連続記録を築こう
継続して進捗を見守りましょう!毎日のコーディング習慣を追跡し、フリーズ日で連続記録を守り、毎日参加することで報酬を獲得しましょう。
12 日連続
明日も戻ってきて連続記録を維持しましょう!
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
ダブル・オア・ナッシング
7日中5日目
連続記録フリーズ
2 left
どこでも学べる
コーディングの旅を持ち歩こう!セットアップ不要、ダウンロード不要 - 開いてすぐにコーディング開始。iOS、Android、Webで4.9星評価で利用可能。
あなたは一人じゃない
グローバルリーダーボードで競い、友達を招待して報酬を獲得し、お互いの成功を祝いましょう。プログラミングは友達と一緒の方が楽しい!
あらゆる学び方に対応
読む・聴く・自分を試す・AIに聞く・学んだことを調べる。どんな学び方にも対応したレッスンです。
変数は、後でプログラム内で参照できる値を格納する、名前のついた入れ物です。
Pythonでは、名前、イコール記号、格納したい値の順で書くことで作成します。
値は後から変えられます。再代入すると、名前は新しい値を指すようになります。
修了証を取得
完了したすべてのコースで証明書を獲得しましょう。LinkedInプロフィールや履歴書に追加して、雇用主にプログラミングスキルをアピールしましょう。
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言語で教えていないコースはどれですか?
&^で、右オペランドで立っているすべてのビットを、左オペランドでクリアします。