PREMIUM

Go言語入門 データ構造編

Go言語における配列、スライス、マップ、構造体の使い方について見ていきます。
0%

このレッスンをはじめる前に

このレッスンを進めるには前提知識が必要です。先に以下のレッスンを完了しておきましょう。

  • #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]
    • 配列宣言の簡略化
    • scores := [3]int{70, 90, 80)
    • scores := [...]int{70, 90, 80}
    • 配列の要素数を調べる、len(scores)
    • 配列の要素の書き換え方、scores[1] = 95
    • 配列が確保した領域外にはアクセスできない
    • 新しい要素を追加したい場合のデータ構造の紹介、スライス
    • スライスと配列の宣言、要素追加方法の違い
    • スライスの宣言、scores := []int{70, 90, 80}
    • 要素の追加、scores = append(scores, 100, 60)
    • スライスの要素数を調べる、len(scores)
    • スライスにスライスを追加した場合の挙動確認
    • エラー、scores = append(scores, moreScores)
    • 値をカンマ区切りで展開、scores = append(scores, moreScores...)
    • スライスの一部を切り出す方法、スライス式
    • moreScores[0:3]、moreScores[:2]、moreScores[3:0]、moreScores[:]
    • 切り出した要素でスライスを作成、scoresToAdd := moreScores[0:3]
    • スライスに追加、scores = append(scores, scoresToAdd...)
    • スライスから切り出したスライス、サブスライス
    • サブスライスの値を変更する際の注意点
    • moreScoresの値を変更し、scoresとscoresToAddも値が変わる理由、参照元の配列を共有しているため
    • 配列、データが格納された領域に名前をつける
    • スライス、配列がどこにあり、何個分までを参照するかという情報を保持
    • サブスライス、元のスライスと同じ場所を参照し、個数だけを変える
    • 反復処理で要素を表示する
    • for i := 0; i < 3; i++ {}
    • for i, score := range scores {}
    • rangeでiを使わない場合の表記、_
    • 順序が重要でないデータの管理、map
    • キーと値をペアにしてデータを管理
    • 変数をデータ型を指定して宣言、使用前にmakeで領域を確保
    • 要素の追加、scores["english"] = 80、append()は使わない
    • 基本、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)
    • 新しい要素の追加、scores["physics"] = 90
    • 要素の削除、delete(scores, "math")
    • キーに対応する値の表示、fmt.Println(scores["english"])
    • 存在しないキーを取得した場合の挙動、エラーにならず、ゼロ値になる
    • カンマOKイディオム(カンマOK慣用句)、v, ok := scores["history"]
    • v、値
    • ok、キーが存在するかしないかtrue、falseで返す
    • okの結果で条件分岐、存在しないキーを取得した場合の挙動を確認
    • for subject, score := range scores {}
    • subjectを使わない場合の書き方、for _. score := range scores {}
    • scoreを使わない場合の書き方、for subject := range scores {}
    • 注意点、いつも同じ順序で表示されるとは限らない
    • マップとスライスの組み合わせ
    • scores := map[string][]int{ "english": []int{80, 40}, ...}
    • for rangeを使用して、要素を出力
    • for subject, scoresSlice := range scores {for _, score := range scoresSlice {...}}
    • より複雑な情報も管理、構造体
    • データ型を定義 type student struct {name string...}
    • 構造体の記述注意点、カンマ不要
    • データ型studentを使用して変数を宣言、var taro student
    • 値の代入、taro.name = "Taro"
    • データの表示、fmt.Println(taro,name)、fmt.Println(taro)
    • 構造体の宣言と代入の簡略化、taro := student{name: "Taro", ...}
    • フィールドの値を書かない場合、ゼロ値が設定される

次におすすめのレッスン