From 94e453b53621cb65ce7841190a0123dde42f9be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franc=C3=A9=20Wilke?= <francewilke@gmail.com> Date: Tue, 9 Apr 2024 13:23:39 +0200 Subject: [PATCH] Add generic functions SliceToSlicePointers and SlicePointersToSlice --- slice_utils/slice_utils.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/slice_utils/slice_utils.go b/slice_utils/slice_utils.go index f203d0d..86ce64e 100644 --- a/slice_utils/slice_utils.go +++ b/slice_utils/slice_utils.go @@ -2,6 +2,7 @@ package slice_utils import ( "github.com/thoas/go-funk" + "gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/utils" ) func MinimumFloat64(values []float64) (min float64) { @@ -64,3 +65,22 @@ func ArraySlice(s []any, offset, length int) []any { } return s[offset:] } + +func SliceToSlicePointers[V any](s []V) []*V { + result := make([]*V, len(s)) + for i, v := range s { + vCopy := v // Create a copy to avoid pointer to loop variable issue + result[i] = utils.ValueToPointer(vCopy) + } + return result +} + +func SlicePointersToSlice[V any](s []*V) []V { + result := make([]V, len(s)) + for i, vp := range s { + if vp != nil { + result[i] = utils.PointerToValue(vp) + } + } + return result +} -- GitLab