feat: returns a pointer to the provided value use template function.

This commit is contained in:
tx7do
2024-04-07 13:19:53 +08:00
parent dcbdf4b7a6
commit 871b028e34
2 changed files with 48 additions and 0 deletions

18
trans/to.go Normal file
View File

@@ -0,0 +1,18 @@
//go:build go1.18
// +build go1.18
package trans
// Ptr returns a pointer to the provided value.
func Ptr[T any](v T) *T {
return &v
}
// SliceOfPtrs returns a slice of *T from the specified values.
func SliceOfPtrs[T any](vv ...T) []*T {
slc := make([]*T, len(vv))
for i := range vv {
slc[i] = Ptr(vv[i])
}
return slc
}

30
trans/to_test.go Normal file
View File

@@ -0,0 +1,30 @@
//go:build go1.18
// +build go1.18
package trans
import "testing"
func TestPtr(t *testing.T) {
b := true
pb := Ptr(b)
if pb == nil {
t.Fatal("unexpected nil conversion")
}
if *pb != b {
t.Fatalf("got %v, want %v", *pb, b)
}
}
func TestSliceOfPtrs(t *testing.T) {
arr := SliceOfPtrs[int]()
if len(arr) != 0 {
t.Fatal("expected zero length")
}
arr = SliceOfPtrs(1, 2, 3, 4, 5)
for i, v := range arr {
if *v != i+1 {
t.Fatal("values don't match")
}
}
}