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