Header
2019-12-03
2019-12-06

Go言語のMap処理(ハッシュ)の操作やサンプルコードなど

2019 12 05 programming

Go言語ではPythonやRubyなどで利用されるハッシュ設定(連想配列)はMapという関数で設定が可能です。

今回はGo言語でのMapの基本的な操作方法を記載します

なお、エディタのダウンロードなどが面倒な方はパイザのオンラインエディタの利用をオススメします。

サンプルコードなどを、ブラウザですぐに確認可能です。

paiza.io

Goのバージョン:1.11.3

Goをダウンロードする場合は

goenvでGo言語をMacへインストールするを御覧ください

Go言語でMapを生成する

Go言語でのMapの生成はmake関数を利用します。 まずは以下のサンプルコードをご覧ください

package main

import "fmt"

func main() {
    m := map[string]int{
        "apple": 10,
        "orange": 20,
        "banana": 300,
    }

    fmt.Println(m)
 // map[apple:10 banana:300 orange:20]が出力
}

Mapを定義するには以下の通りmapで宣言を行います。

map[<キーのデータ型>]<値のデータ型>{<キー>: <>, <キー>: <>}

データ型は map[string]intのように必ずしもstirngとintでなくてもいいので、map[int]stringなども可能です。

また、初めにMapをMakeして、後からkeyと値を指定する方法も可能です。

package main

import "fmt"

func main() {
    m := map[string]int{
        "apple": 10,
        "orange": 20,
        "banana": 300,
    }

    fmt.Println(m)
 // map[apple:10 banana:300 orange:20]が出力
}

Go言語でMapから値を取り出す

keyを指定して値を取得する場合は

変数[key]と設定すれば可能です。

また繰り返し処理を利用すれば、全てのkeyと値のペアを取得する事も可能です。

package main

import "fmt"

func main() {
    m := map[string]int{
        "apple": 10,
        "orange": 20,
        "banana": 300,
    }

 // 10が出力される
    fmt.Println( m["apple"])


//   繰り返し処理でkeyとvalueを取得
    for key, value := range m {
      fmt.Println(key, value)
    }

}

Go言語でMapに値を追加する

マップ[key] = 値でmapに値を追加できます。

package main

import "fmt"

func main() {
    m := map[string]int{
        "apple": 10,
        "orange": 20,
        "banana": 300,
    }

    m["lemon"] = 400
    // map[apple:10 banana:300 lemon:400 orange:20]
    fmt.Println(m)

}

Go言語でMapに値を削除する

削除する際はdelete(m, "key")で対象のkeyと値を削除可能です

package main

import "fmt"

func main() {
    m := map[string]int{
        "apple": 10,
        "orange": 20,
        "banana": 300,
    }

    delete(m, "orange")
    //map[apple:10 banana:300]
    fmt.Println(m)

}

Go言語で配列(Slice)をMapに変更する

詳細な解説はコメントに記載しています。

package main

import "fmt"

func main() {
    // slice
    slices := []string{"key1", "value1", "key2", "value2","key3", "value3"}
    // 空Mapを作成
    e_map := make(map[string]string)
    // 要素2つ毎に繰り返し処理を行い
    for i := 0; i < len(slices); i += 2 {
        e_map[slices[i]] = slices[i+1]

    }
    // map[key1:value1 key2:value2 key3:value3]
    fmt.Println(e_map)
}

以上になります。

Go言語の配列処理のArrayとSlice違いやサンプルコードなど

goenvでGo言語をMacへインストールする

【初心者・独学者向け】Ruby on Railsでページの次へと前へのリンクを設定する

あなたにお勧めの記事
前の記事
次の記事