From 1e26bbee7a4aa77d188300e5554c9571733f181b Mon Sep 17 00:00:00 2001 From: 0syntrax0 <5194293+0syntrax0@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:58:57 -0500 Subject: [PATCH] adding support for quick pointer convertion --- pointers.go | 13 +++++++++++++ pointers_test.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 pointers.go create mode 100644 pointers_test.go diff --git a/pointers.go b/pointers.go new file mode 100644 index 0000000..4a4af88 --- /dev/null +++ b/pointers.go @@ -0,0 +1,13 @@ +package underscore + +// Convert values to pointers +// +// Instead of: +// v = "value" +// MyPointerVar = &v +// +// Use: +// MyPointerVar = ToPointer("value") +func ToPointer[T any](in T) *T { + return &in +} diff --git a/pointers_test.go b/pointers_test.go new file mode 100644 index 0000000..be36bde --- /dev/null +++ b/pointers_test.go @@ -0,0 +1,45 @@ +package underscore_test + +import ( + "reflect" + "testing" + + u "github.com/rjNemo/underscore" + "github.com/stretchr/testify/assert" +) + +func TestPointers(t *testing.T) { + variable := 123 + var object struct{} + + cases := []struct { + value any + expected bool + }{ + { + value: u.ToPointer("myValue"), + expected: true, + }, + { + value: u.ToPointer(variable), + expected: true, + }, + { + value: &variable, + expected: true, + }, + { + value: nil, + expected: false, + }, + { + value: u.ToPointer(object), + expected: true, + }, + } + + for _, c := range cases { + got := (reflect.ValueOf(c.value).Kind() == reflect.Ptr) + assert.Equal(t, c.expected, got) + } +}