commit 38d7ba562e6504dabcb4566bc898bb8104ee9323
parent d86519fe954cbeef88ccd1c96f611aeb908389d9
Author: Yongbin Kim <iam@yongbin.kim>
Date: Mon, 10 Oct 2022 08:38:53 +0900
slices: Added MapWithError func
Signed-off-by: Yongbin Kim <iam@yongbin.kim>
Diffstat:
1 file changed, 23 insertions(+), 0 deletions(-)
diff --git a/slices/map.go b/slices/map.go
@@ -8,6 +8,17 @@ func Map[T any, R any](m []T, action func(T) R) (result []R) {
return
}
+func MapWithError[T any, R any](m []T, action func(T) (R, error)) (result []R, err error) {
+ result = make([]R, len(m))
+ for i, item := range m {
+ result[i], err = action(item)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return
+}
+
func FlatMap[T any, R any](m []T, action func(T) []R) (result []R) {
result = make([]R, 0, len(m))
for _, item := range m {
@@ -15,3 +26,15 @@ func FlatMap[T any, R any](m []T, action func(T) []R) (result []R) {
}
return
}
+
+func FlatMapWithError[T any, R any](m []T, action func(T) ([]R, error)) (result []R, err error) {
+ result = make([]R, 0, len(m))
+ for _, item := range m {
+ items, err := action(item)
+ if err != nil {
+ return nil, err
+ }
+ result = append(result, items...)
+ }
+ return
+}