コース一覧
    Go基礎:データ構造
    appendで育てる

    Go基礎:データ構造

    Goのスライス、マップ、構造体、メソッドを使ったデータ表現を学ぶコースです。

    1
    スライスとマップ
    01. 配列15分
    02. スライス15分
    03. appendで育てる15分
    04. rangeで走査する15分
    05. マップ15分
    06. カンマokイディオム15分
    07. つくる: 検索と集計20分
    08. 第5章クイズ10分
    2
    構造体とメソッド
    01. 構造体15分
    02. 初期化とフィールド15分
    03. メソッド15分
    04. ポインタレシーバ20分
    05. New関数の慣習15分
    06. 構造体のスライス15分
    07. つくる: Itemで再設計20分
    08. 第6章クイズ10分

    appendで育てる

    追加は append

    Go

    prices := []int{1200, 24800}
    prices = append(prices, 999)
    // [1200, 24800, 999]

    注目してほしいのは、結果を代入し直していることです。

    Go

    append(prices, 999)          // これだけでは増えない
    prices = append(prices, 999) // こう書く

    append は元のスライスを変えるのではなく、追加した結果を返します。受け取らないと消えます。

    書き忘れると増えないので、Go は「結果を使っていない」とエラーで教えてくれます。

    なぜ返す形なのか

    前のレッスンで、スライスは配列を指す情報だと書きました。入れ物には最初から決まった容量があり、空きがあるうちは同じ配列に書き足します。

    プレーンテキスト

    容量4のうち2つ使用 → 3つ目を足す → 同じ場所に書ける

    空きが無くなると、より大きい配列を新しく作って引っ越します。このとき指す先が変わるので、新しい情報を返す必要があります。だから代入し直す形になっています。

    引っ越しが起きても書いた側は気にしなくてよい、というのがこの仕組みの狙いです。

    複数まとめて足す

    Go

    prices = append(prices, 999, 500, 300)

    スライスごと足すこともできます。

    Go

    more := []int{500, 300}
    prices = append(prices, more...)

    末尾の ... は「バラして渡す」という意味です。これが無いと「スライスを1個足す」ことになり、型が合わずエラーになります。

    空から育てる

    条件に合うものだけ集めるとき、この形をよく使います。

    Go

    var cheap []int
    for i := 0; i < len(prices); i++ {
    	if prices[i] < 1000 {
    		cheap = append(cheap, prices[i])
    	}
    }

    var cheap []int のゼロ値は nil ですが、append は nil にも足せます。空から始めて育てるのが定石です。

    第2章のゼロ値が効いている場面です。初期化を書かずに、いきなり使い始められます。

    要件

    1. 価格が上限未満の商品を集める(上限ちょうどは含まない)
    2. 集めた商品名を , でつないで返す
    3. 1件も該当しないときは 該当なし を返す
    4. 集めるところで append を使う

    ヒント

    初期コードは全件を集めてしまっています。`if prices[i] < limit {` で絞ってください

    `<` と `<=` の違いに注意してください。上限ちょうどは含みません

    集め終わった後に `if len(found) == 0 {` で該当なしを判定します。つなぐ処理の前に置いてください

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • rangeで走査する

      for rangeで添字と値を同時に受け取り、一覧を番号つきで表示できるようになります。

    • マップ

      キーと値の組で持つマップを使い、カテゴリごとの件数を集計できるようになります。

    • カンマokイディオム

      キーの有無を2つ目の戻り値で判定し、無いキーを安全に扱えるようになります。

    • つくる: 検索と集計

      第5章の知識でキーワード検索とカテゴリ集計を同時に行えるようになります。

    main.go
    エディタを読み込んでいます

    メモ

    appendで育てる

    ⌘S で保存