1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

make関数の使い方をまとめてみる[Go]

Posted at

みなさん、Goのmake関数って使いこなせましたか?

考え方としてはデータ構造を作成するものなイメージはありますが、すぐ使ってみろと言われたら無理だなと感じ、理解が浅いなと思ったので、今回はmake関数について簡単にまとめようと思います。

make関数とは

動的にデータ構造であるスライス、マップを作成することができるgoの組み込み関数のことです。

スライス

配列とは少し異なった、入れることのできる要素数を可変長にしたものです。

Python等でいうリストに近いです。

配列

特定のデータ型の要素を等間隔で並べて集めたもののことを言います。
配列は入れられる要素数を最初に決めて作成する必要があります。

マップ

連想配列と呼ばれるもので、キーに対してバリューを対応させて配列のように並べていくデータ構造のことです。

長さと容量

また、これらのデータ構造には長さと容量という概念が存在します。

長さ

スライスにおける現在存在している要素の数のことです。

容量

スライスの元となる配列の要素数のことです。

わかりづらいですが、配列はスライスからできているので、要素が追加してもまたメモリ空間を作らなくてもいいように、先に取っておいた空間のことと認識するとわかりやすいかなと思います。

実際にmake関数を作ってみる

配列

配列は、makeを使わない場合は下のように宣言します。

var 変数名 [len]type

スライス

スライスは下のように使用することが可能です。

make([]type, len)
make([]type, len, cap)

入れる要素の型をstringとすると下のように作成します。

nameSlice := make([]int, 0)

長さを指定すると表示はデータ型によって異なります。

make([]int, 2) //[0,0]
make([]bool, 2) //[false,false]
make([]string,2) //["",""]

ここに初期容量3とすると下のようになります。

nameSlice := make([]int, 0, 3)

マップ

マップを作成するには下のような感じにコードを生成します。

make(map[key_type]value_type)
make(map[key_type]value_type, cap_first_value)

マップは下のように作ります。

nameList := make(map[int]string)

初期容量を100とすると下のようになります。

nameList := make(map[int]string,100)

mapにおける要素があるかどうかの確認方法

mapを使って既に出たデータをキャッシュすることとかあると思うのですが、その際に使えるmapにキーがあるかどうか調べるときは下のコードを使います。

if elem, ok := m[key] ; ok{
}else{
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?