From 708628139985109a4fa192319c3eed6c33270623 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 29 Dec 2023 16:19:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20sher=20=E5=8C=85=E6=96=B0=E5=A2=9E=20ma?= =?UTF-8?q?p=20=E7=9B=B8=E5=85=B3=E6=98=A0=E5=B0=84=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/sher/map.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 utils/sher/map.go diff --git a/utils/sher/map.go b/utils/sher/map.go new file mode 100644 index 0000000..75d0459 --- /dev/null +++ b/utils/sher/map.go @@ -0,0 +1,25 @@ +package sher + +// MappingFromSlice 将切片中的元素进行转换 +func MappingFromSlice[S ~[]V, NS ~[]N, V, N any](slice S, handler func(value V) N) NS { + if slice == nil { + return nil + } + result := make(NS, len(slice)) + for i, v := range slice { + result[i] = handler(v) + } + return result +} + +// MappingFromMap 将 map 中的元素进行转换 +func MappingFromMap[M ~map[K]V, NM ~map[K]N, K comparable, V, N any](m M, handler func(value V) N) NM { + if m == nil { + return nil + } + result := make(NM, len(m)) + for k, v := range m { + result[k] = handler(v) + } + return result +}