1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-07 06:02:27 +08:00

Add ToPointer,ToSlicePointer,ToSlice func (#36)

* Add ToPointer func

* Add ToSlice and ToSlicePointer func

Co-authored-by: zhanghu <305835360@qq.com>
This commit is contained in:
tangqiu0205
2022-07-05 19:15:54 +08:00
committed by GitHub
parent fc0e104591
commit bab0a27e40
4 changed files with 48 additions and 0 deletions

View File

@@ -170,6 +170,11 @@ func ToInt(value any) (int64, error) {
}
}
// ToPointer returns a pointer to this value
func ToPointer[T any](value T) *T {
return &value
}
// StructToMap convert struct to map, only convert exported struct field
// map key is specified same as struct field tag `json` value
func StructToMap(value any) (map[string]any, error) {

View File

@@ -178,3 +178,10 @@ func TestColorRGBToHex(t *testing.T) {
assert := internal.NewAssert(t, "TestColorRGBToHex")
assert.Equal(expected, colorHex)
}
func TestToPointer(t *testing.T) {
assert := internal.NewAssert(t, "TestToPointer")
result := ToPointer[int](123)
assert.Equal(*result, 123)
}

View File

@@ -803,3 +803,21 @@ func LastIndexOf[T any](slice []T, value T) int {
return -1
}
// ToSlicePointer returns a pointer to the slices of a variable parameter transformation
func ToSlicePointer[T any](value ...T) []*T {
out := make([]*T, len(value))
for i := range value {
out[i] = &value[i]
}
return out
}
// ToSlice returns a slices of a variable parameter transformation
func ToSlice[T any](value ...T) []T {
out := make([]T, len(value))
for i := range value {
out[i] = value[i]
}
return out
}

View File

@@ -583,3 +583,21 @@ func TestLastIndexOf(t *testing.T) {
assert.Equal(1, LastIndexOf(arr, "a"))
assert.Equal(-1, LastIndexOf(arr, "d"))
}
func TestToSlice(t *testing.T) {
assert := internal.NewAssert(t, "TestToSlice")
str1 := "a"
str2 := "b"
assert.Equal([]string{"a"}, ToSlice(str1))
assert.Equal([]string{"a", "b"}, ToSlice(str1, str2))
}
func TestToSlicePointer(t *testing.T) {
assert := internal.NewAssert(t, "TestToSlicePointer")
str1 := "a"
str2 := "b"
assert.Equal([]*string{&str1}, ToSlicePointer(str1))
assert.Equal([]*string{&str1, &str2}, ToSlicePointer(str1, str2))
}