ドットインストール - 3分動画でマスターできるプログラミング学習サービス
レッスン一覧
料金プラン
レッスン一覧
料金プラン
ログイン
運営からのお知らせ
2025/08/28
NEW
【週刊ドットインストール】 Figma入門を制作中、256timesの新クラスを企画中
PREMIUM
Go言語入門 データ構造編
Go言語における配列、スライス、マップ、構造体の使い方について見ていきます。
0%
このレッスンをはじめる前に
このレッスンを進めるには前提知識が必要です。先に以下のレッスンを完了しておきましょう。
Go言語入門 基礎文法編
(全16回)
PREMIUM
PREMIUM
0%
Go言語入門 制御構造編
(全14回)
PREMIUM
PREMIUM
0%
Go言語入門 関数編
(全12回)
PREMIUM
PREMIUM
0%
動画レッスン一覧
(18)
ミニクイズ
14
#01 配列の記法を確認しよう
(02:16)
無料公開中
複数の値をまとめるための仕組み
配列、スライス、マップ、構造体
配列のデータ型の指定、var scores [3]int
インデックス、0から始まる
未完了
#02 配列を使ってみよう
(01:35)
無料公開中
配列の宣言、var scores [3]int
配列の要素への代入、scores[0] = 70
配列の要素の確認方法、fmt.Println(scores[0])、fmt.Println(scores)
ターミナルでの配列の表示、[70, 90, 80]
未完了
#03 配列を別の書き方で宣言してみよう
(02:21)
無料公開中
配列宣言の簡略化
scores := [3]int{70, 90, 80)
scores := [...]int{70, 90, 80}
配列の要素数を調べる、len(scores)
未完了
#04 配列の要素を書き換えてみよう
(01:50)
無料公開中
配列の要素の書き換え方、scores[1] = 95
配列が確保した領域外にはアクセスできない
新しい要素を追加したい場合のデータ構造の紹介、スライス
未完了
#05 スライスを使ってみよう
(02:10)
スライスと配列の宣言、要素追加方法の違い
スライスの宣言、scores := []int{70, 90, 80}
要素の追加、scores = append(scores, 100, 60)
スライスの要素数を調べる、len(scores)
未完了
#06 スライスにスライスを追加してみよう
(01:33)
スライスにスライスを追加した場合の挙動確認
エラー、scores = append(scores, moreScores)
値をカンマ区切りで展開、scores = append(scores, moreScores...)
未完了
#07 スライスの一部を切り出してみよう
(02:39)
スライスの一部を切り出す方法、スライス式
moreScores[0:3]、moreScores[:2]、moreScores[3:0]、moreScores[:]
切り出した要素でスライスを作成、scoresToAdd := moreScores[0:3]
スライスに追加、scores = append(scores, scoresToAdd...)
未完了
#08 サブスライスの注意点を確認しよう
(01:23)
スライスから切り出したスライス、サブスライス
サブスライスの値を変更する際の注意点
未完了
#09 スライスの挙動を理解しよう
(02:32)
moreScoresの値を変更し、scoresとscoresToAddも値が変わる理由、参照元の配列を共有しているため
配列、データが格納された領域に名前をつける
スライス、配列がどこにあり、何個分までを参照するかという情報を保持
サブスライス、元のスライスと同じ場所を参照し、個数だけを変える
未完了
#10 スライスと反復処理を組み合わせよう
(02:36)
反復処理で要素を表示する
for i := 0; i < 3; i++ {}
for i, score := range scores {}
rangeでiを使わない場合の表記、_
未完了
#11 マップの記法を確認しよう
(02:06)
順序が重要でないデータの管理、map
キーと値をペアにしてデータを管理
変数をデータ型を指定して宣言、使用前にmakeで領域を確保
要素の追加、scores["english"] = 80、append()は使わない
未完了
#12 マップを使ってみよう
(02:41)
基本、var scores map[string]int、scores = make(map[string]int)
簡略化、var scores = make(map[string]int)
要素の追加、scores["math"] = 70
ターミナルでの表示、map[english:80, math:70]
宣言と代入をまとめる、 scores := map[string]int{...}
半角空白の入れ方
長さの確認、len(scores)
未完了
#13 マップを操作してみよう
(02:06)
新しい要素の追加、scores["physics"] = 90
要素の削除、delete(scores, "math")
キーに対応する値の表示、fmt.Println(scores["english"])
存在しないキーを取得した場合の挙動、エラーにならず、ゼロ値になる
未完了
#14 カンマOKイディオムを使ってみよう
(02:05)
カンマOKイディオム(カンマOK慣用句)、v, ok := scores["history"]
v、値
ok、キーが存在するかしないかtrue、falseで返す
okの結果で条件分岐、存在しないキーを取得した場合の挙動を確認
未完了
#15 マップと反復処理を組み合わせよう
(02:11)
for subject, score := range scores {}
subjectを使わない場合の書き方、for _. score := range scores {}
scoreを使わない場合の書き方、for subject := range scores {}
注意点、いつも同じ順序で表示されるとは限らない
未完了
#16 より複雑なデータを扱ってみよう
(02:50)
マップとスライスの組み合わせ
scores := map[string][]int{ "english": []int{80, 40}, ...}
for rangeを使用して、要素を出力
for subject, scoresSlice := range scores {for _, score := range scoresSlice {...}}
未完了
#17 構造体の記法を確認しよう
(02:02)
より複雑な情報も管理、構造体
データ型を定義 type student struct {name string...}
構造体の記述注意点、カンマ不要
データ型studentを使用して変数を宣言、var taro student
値の代入、taro.name = "Taro"
未完了
#18 構造体を使ってみよう
(02:05)
データの表示、fmt.Println(taro,name)、fmt.Println(taro)
構造体の宣言と代入の簡略化、taro := student{name: "Taro", ...}
フィールドの値を書かない場合、ゼロ値が設定される
未完了
#01 配列の記法を確認しよう
1
#02 配列を使ってみよう
1
#03 配列を別の書き方で宣言してみよう
1
#04 配列の要素を書き換えてみよう
1
#05 スライスを使ってみよう
1
#06 スライスにスライスを追加してみよう
1
#07 スライスの一部を切り出してみよう
1
#08 サブスライスの注意点を確認しよう
ミニクイズなし
#09 スライスの挙動を理解しよう
ミニクイズなし
#10 スライスと反復処理を組み合わせよう
1
#11 マップの記法を確認しよう
1
#12 マップを使ってみよう
1
#13 マップを操作してみよう
1
#14 カンマOKイディオムを使ってみよう
1
#15 マップと反復処理を組み合わせよう
1
#16 より複雑なデータを扱ってみよう
ミニクイズなし
#17 構造体の記法を確認しよう
ミニクイズなし
#18 構造体を使ってみよう
1
次におすすめのレッスン
Go言語入門 ポインタ編
(全9回)
PREMIUM
PREMIUM
0%
Go言語入門 データ型編
(全14回)
PREMIUM
PREMIUM
0%
Go言語入門 並行処理編
(全16回)
PREMIUM
PREMIUM
0%
リリース情報(note)
『Go言語入門 データ構造編』をリリースしました
詳細情報
最終更新日
2024年10月9日
バージョン情報
Go 1.23.0