【Goライブラリ】go-linqを活用しよう

go言語

Go言語でphpのarray_filter的なことをやりたい時にこのgo-linqがそれを可能にしてくれます。条件に合ったスライス(配列)をセレクトするなど、使いこなせると大変便利です。

今回は簡単ではあるが、インストールから簡単な使い方まで紹介したいと思います。早速Go!

go-linqのインストール

ターミナルで以下のコマンドを叩いてインストールしよう。

$ go get github.com/ahmetalpbalkan/go-linq

whereでフィルターをかける

テスト用に下記のproductDataListがあるとします。

// 商品struct
type Product struct {
    ProductId   int
    ProductName string
    Price       float64
}

var productDataList []Product

product1 := Product{
   1,
   "name1",
   2.0,
}

product2 := Product{
   2,
   "name2",
   2.0,
}

product3 := Product{
   3,
   "name3",
   3.0,
}

productDataList = append(productDataList, product1)
productDataList = append(productDataList, product2)
productDataList = append(productDataList, product3)
fmt.Println(productDataList)// 出力:[{1 name1 2} {2 name2 2} {3 name3 3}]

WhereでPriceが2のスライスを出力してみよう

linq.From(productDataList).Where(func(i interface{}) bool { return i.(Product).Price == 2 }).ToSlice(&productDataList)
fmt.Println(productDataList)// 出力:[{1 name1 2} {2 name2 2}]

FirstWithで最初の一件だけを取得する

productData := linq.From(productDataList).FirstWith(func(i interface{}) bool {
    return i.(Product).Price == 2
}).(Product)
fmt.Println(productData)// 出力:{1 name1 2}

AnyWithで指定条件のデータがあるかを調べる

hasData := linq.From(productDataList).AnyWith(
    func(i interface{}) bool {
        return i.(Product).ProductName == "name4"
    },
)
fmt.Println(hasData)// 出力:false

Selectで好きなデータに加工して出力できる

var taxList []string
inq.From(productDataList).Select(func(i interface{}) interface{} {
   return fmt.Sprintf("%sの消費税は%.1fです。", i.(Product).ProductName, i.(Product).Price*0.1)
).ToSlice(&taxList)
mt.Println(taxList)
// 出力:[name1の消費税は0.2です。 name2の消費税は0.2です。 name3の消費税は0.3です。]

まとめ

簡単ではあるが、使い方を紹介させていただきました。他にも色んな使い方ができるのでより詳しく知りたい場合はドキュメントを御覧ください。

GoはGoogle様が開発した言語で、これからはますます人気になる一方だと思われます。興味があれば勉強しておいて損はないかなと思います。ただ、文法はかなり癖があるので他の言語で慣れてると最初は少し戸惑うかもしれないですw

最近はメルカリを始めたことをきっかけに、商品の仕入や在庫管理ができるWebアプリをGoで開発中です。思ったことが形になっていくのが日に日に目に見えてモチベーションがずっと高いままで楽しいです。

Go言語を勉強するならこれ!

最後にプログラミング基礎の勉強はやはり本は一番だと思いますので、基礎をしっかり学べたい方は是非、一冊を手にとってみてはいかがでしょうか?

コメント

タイトルとURLをコピーしました