Header
2019-11-30
2019-12-05

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

2019 11 30 go array

Go言語の配列処理はArrayとSliceの解説と簡単な処理のサンプルコードを記載します

Goのバージョン:1.11.3

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

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

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

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

paiza.io

Go言語の配列処理ArrayとSliceの違い

そもそもGo言語の配列はArrayとSliceがあります。

Arrayの配列生成時は要素数とデータの型を記載します

var array  [4]int

//型推論で生成する場合は以下
a := [4] int{1,2,3,4}

Arrayで可変長の配列を生成する場合は[...]を利用する

a := [...] int{1,2,3,4}

Arrayの注意点として、配列の要素数が決まっているので、 配列に要素を追加しようとするとエラーになります

Sliceは他のプログラミング言語のRubyやPythonの配列処理と 同様な動作をします。

Arrayのように要素数を記載する必要はありませんし可変長で配列生成が可能です。

var slice_array  = []int{11, 21, 33, 22, 12, 10}

//型推論で生成する場合は以下
slice_array := []int{11, 21, 33, 22, 12, 10}

また、要素数の指定は必要ないのでsliceへ要素を追加する事が可能です。

メモリ単位の軽さなどを考えるとArrayを利用するといった事もあるようですが、基本私が関わっている会社で、Go言語の配列処理はSliceを利用することが多いです。

以下からSliceを用いたサンプルコードを記載します

Go言語の配列(Slice)で数値の要素から最小値を取得する

for文で繰り返し処理を行います。

package main

import (
    "fmt"
)

func main() {
    var min int
    //Sliceの配列宣言なので配列数の指定や[...]は不要
    sliceArray := []int{11, 21, 33, 22, 12, 10}

    //Sliceのrangeは値をポインタでなく値をそのまま取得できる
    for i, num := range sliceArray {
        if i == 0 {
            min = num
            continue
        }

        if min >= num {
            min = num
        }
    }

    fmt.Println(min)
}

以下のiで繰り返し回数 rangeでsliceArrayの要素をnumに代入します

  for i, num := range sliceArray {

Go言語の配列(Slice)で配列の文字列をソートする

ライブラリのsortをインポートして

sort.Strings(配列)で配列の中身をソートできます。

package main

import (
    "fmt"
    "sort"
)

func main() {
    sliceArray := []string{"orange", "banana", "apple", "grape"}
    sort.Strings(sliceArray)
    //[apple banana grape orange]が出力
    fmt.Println(sliceArray)
}

Go言語の配列(Slice)で配列の数字をソートする

sort.Ints(配列)で数値ソートが可能です。

package main

import (
    "fmt"
    "sort"
)

func main() {
    sliceArray := []int{11, 21, 33, 22, 12, 10}
    sort.Ints(sliceArray)
    //[10 11 12 21 22 33]が出力
    fmt.Println(sliceArray)
}

以上になります。

その他関連記事

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

Gemを利用せずRailsで画像をDBに投稿する

AWS S3コマンドでS3のバケットにzipファイルを転送する

フリーランスエンジニアのなり方|法人化した人間が解説

税理士が執筆|フリーランスは老後資金を考えて、毎月いくら稼ぐ必要があるか

前の記事
次の記事
人気記事
カテゴリーから記事を探す