feat: returns a pointer to the provided value use template function.
This commit is contained in:
18
trans/to.go
Normal file
18
trans/to.go
Normal 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
30
trans/to_test.go
Normal 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user