#GoでArray.find()のような関数を使う

GoでJavaScriptのArray.find()ような関数を使うには、 下記のようにloのFind()を使います。 loはLodashのようにslicemapを処理する関数を提供します。

package main

import (
    "fmt"

    "github.com/samber/lo"
)

type Item struct {
    Name  string
    Price int
}

func main() {
    items := []*Item{
        {
            Name:  "foo",
            Price: 11,
        },
        {
            Name:  "bar",
            Price: 23,
        },
        {
            Name:  "baz",
            Price: 15,
        },
        {
            Name:  "qux",
            Price: 23,
        },
    }
    item, result := lo.Find(items, func(i *Item) bool { return i.Price == 23 })
    if result {
        // &main.Item{Name:"bar", Price:23}
        fmt.Printf("%#v\n", item)
    }
}