Menu
Coddy logo textTech
学習パス

Go言語のデータ構造とアルゴリズム

Go言語が用意しているのはスライスとマップだけで、残りはあなたに任されています。スタック型もキュー型もセット型もなく、container/heapのヒープも、heap.Interfaceを実装するまでは何もしてくれません。このパスでは、すべての構造をGo言語の構造体とポインタで作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。

377 レッスン228 チャレンジ702 クイズの問題

  • 初心者向け
  • sparkles iconAIによるコーディングサポート
  • hint icon実践的なインタラクティブレッスン
  • volume On icon全レッスンに音声ナレーション付き
  • quiz icon知識を確かめるクイズ
  • certificate iconパス全体で23枚の無料修了証

Go言語のDSA、ステップごとに

38 コース377 レッスン228 チャレンジ702 クイズの問題

各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをGo言語で開きます。まだGo言語で教えていない3つのコースは、ステップの後にまとめて載せています。

  1. 1
    このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをGo言語でゼロから実装し、実際に問題を解くのに使います。これを終えると、スライスをスタックとして、マップをセットとして使うことが根拠を持って選べる選択になり、Go言語にないキュー型も自分で書いたことのあるものになります。開始
  2. 2
    このステップを始める開始双方向連結リスト、ヒープと優先度付きキュー、トライ木、グラフ、そして自己平衡するAVL木。最初の双方向連結リストには、container/listという既製品があります。このステップを終えると、ヒープを自分で作ったのでheap.Interfaceの5つのメソッドの意味がわかり、Go言語が一度も用意しなかった平衡木も自分で作れるようになります。開始
  3. 3
    このステップを始める開始バブル、選択、挿入、マージ、クイック、ヒープ、計数、基数ソートを、Go言語で書き、可視化ツールで眺めます。sort.SliceはGo 1.19からpattern-defeating quicksortを使っていて、slices.Sortも同じです。どちらも安定ではなく、だからこそsort.SliceStableがあります。このステップを終えれば、それらの言葉がそれぞれ何を意味するのかがわかります。開始
  4. 4
    このステップを始める開始Go言語での再帰のチャレンジ問題。Go言語ではゴルーチンのスタックが小さく始まって必要に応じて伸びるので、数千回の深さの再帰でもオーバーフローすることはめったにありません。それでもベースケースが抜けていれば、いずれ上限(64ビットシステムではデフォルトで1GBのスタック)に達し、遅いプログラムではなく致命的エラーで終わります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ
  5. 5
    このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でGo言語で学びます。Go言語でのダイクストラ法の優先度付きキューは、自分で定義したスライス型の上のcontainer/heap、つまりインターフェースの向こうにあるステップ2のヒープです。開始
  6. 6
使える機能
コーディングを学ぶために使うすべて

Learn by Doing

Write real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.

playground.js
Code Editor
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

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!

fire Filled icon
left icon

January 2026

right icon

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

product Double Or Nothing icon

Double or Nothing

Day 5 of 7

fire Freeze icon

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.

Python
7Streak
250Score
5Energy
Variables
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUE
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Journey
Goals
Leaderboard
Profile
4.9
StarStarStarStarStar
Rating

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!

Challenger League
Challenger LeagueTop 7 advance
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconPromotion zoneleaderboard Arrow Up icon

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.

Intro to Variables
Audio

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.

1xSarah

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.

CoddyCertificate of Completion
This certifies thatJohn Doehas successfully completed
python iconPython Fundamentals
Verified
DateJan 2026
LinkedInAdd to LinkedIn

Go言語のDSAをCoddyで学ぶ理由

  • Go言語があなたに任せている構造。Go言語に組み込まれているのはスライスとマップまでです。スタックはappendで追加して再スライスするスライス、セットはmap[T]struct{}で、キュー型や木はまったくありません。足りないものを書く方法と、スライスの各操作のコストを知っていることは、Go言語を知ることの一部です。
  • 構造体とポインタで、何も隠れていない。Go言語にはクラスがありません。ノードは次のノードへのポインタを持つstructで、メソッドは型に結びつけて定義します。連結リストや木は見たとおりの姿をしていて、ジェネリクス(Go 1.18以降)でどんな要素型にも再利用でき、ガベージコレクタがあるのでmallocfreeを管理する必要もありません。
  • パスのほぼすべてをGo言語で。データ構造、ソート、グラフアルゴリズム、再帰のチャレンジ、面接パックは、すべてGo言語で教えています。別の言語で教える3つのコースは、それぞれへのリンクとともにステップの後にまとめて載せています。動的計画法とPython面接シリーズ(Python)、そしてビット演算(C++)です。ビット演算はGo言語からも自然に読めます。Go言語にはC++の&|^<<>>があり、NOTは^xと書きます。
  • 面接と同じ形で採点。どのレッスンもテストケースで確認されるGo言語のチャレンジで終わり、失敗したときはBugsyがあなたのコードを読み、答えを教えずに修正の方向へ導きます。ほとんどのコースで無料の修了証が発行され、それぞれ専用URLで検証できます。

Go言語でのDSA学習についてよくある質問

Go言語はデータ構造とアルゴリズムの学習に向いていますか?

はい。高速なネイティブコードにコンパイルされ、構文が小さいので読むもののほとんどがアルゴリズムそのものになり、ジェネリクス(Go 1.18以降)で型付きのスタックやヒープを再利用できます。トレードオフは標準ライブラリが簡素なことです。スライス、マップ、container/listcontainer/heap以外の構造は自分で書くことになりますが、学習のパスではそれこそが目的です。またGo言語は、DockerやKubernetesを含め、今日のクラウドインフラの多くを動かしているので、バックエンドの職種では面接で使う言語として自然な選択です。

Go言語のどの型とパッケージが、どのデータ構造にあたりますか?

スライスは動的配列で、appendと再スライスを使えばスタックにもなります。マップはハッシュテーブルで、map[T]struct{}が慣用的なセットです。container/listは双方向連結リストで、container/heapheap.Interfaceを実装した任意の型の上で二分ヒープを動かします。キュー型、木、トライ木、グラフはないので、それらはステップ1と2で自分で作ります。

Go言語のcontainer/heapはどう動くのですか?

自分で定義したスライス型にheap.Interfaceを実装します。sort.Interface由来のLenLessSwapに加えて、スライスの末尾に追加するだけ、末尾から取り除くだけのPushPopです。そのうえで、自分のメソッドではなくパッケージ関数のheap.Pushheap.Popを呼ぶと、順序を保つために要素を上下に移動させる処理をそれらが行ってくれます。自分でヒープを書いたことがないうちは奇妙に見えますが、それを書くのがステップ2です。

Go言語のマップをrangeで回すと、なぜ毎回順序が変わるのですか?

Go言語は、どのプログラムもその順序に依存しないように、マップの反復順序を意図的にランダムにしているからです。ハッシュテーブルには、どの言語でも意味のある順序はありません。Go言語は、あなたがそれに必ず気づくようにしているだけです。テストが比較する出力のように順序が重要な場合は、キーをスライスに集めてソートするか、マップと並べてスライスを持っておきましょう。

このパスで、Go言語で教えていないコースはどれですか?

3つです。動的計画法とPython面接シリーズはPythonで、ビット演算はC++で教えています。これらはステップの後にまとめて載せてあり、それぞれのリンクからその言語でコースを開けます。Go言語ならメモ化テーブルはスライスかマップです。またGo言語には、C++にないビット演算子がひとつあります。AND NOTの&^で、右オペランドで立っているすべてのビットを、左オペランドでクリアします。

このパスを始める前に、Go言語を知っている必要がありますか?

少なくとも、構造体、ポインタ、スライス、マップ、メソッドは必要です。ジェネリクスも知っていると役立ちますが、途中で身につきます。初めて見るものがあれば、まずCoddyのGo言語コースが無料でそこまで連れて行ってくれます。このパスは、そのコースが終わるところから始まります。

他の学習パス

同じコースを別の職種向けに並べたものです。進捗は引き継がれ、あるパスで修了したコースは、それを含むすべてのパスで修了扱いになります。

すべての学習パス
Coddy programming languages illustration

データ構造とアルゴリズムパスを無料で始める

学習を始める