mirror of
https://github.com/samber/lo.git
synced 2025-09-26 20:11:13 +08:00
feat: adding FromSlicePtrOr (#506)
This commit is contained in:
13
README.md
13
README.md
@@ -255,6 +255,7 @@ Type manipulation helpers:
|
||||
- [FromPtrOr](#fromptror)
|
||||
- [ToSlicePtr](#tosliceptr)
|
||||
- [FromSlicePtr](#fromsliceptr)
|
||||
- [FromSlicePtrOr](#fromsliceptror)
|
||||
- [ToAnySlice](#toanyslice)
|
||||
- [FromAnySlice](#fromanyslice)
|
||||
- [Empty](#empty)
|
||||
@@ -2700,6 +2701,18 @@ ptr := lo.Compact(
|
||||
// []string{"hello", "world"}
|
||||
```
|
||||
|
||||
### FromSlicePtrOr
|
||||
|
||||
Returns a slice with the pointer values or the fallback value.
|
||||
|
||||
```go
|
||||
str1 := "hello"
|
||||
str2 := "world"
|
||||
|
||||
ptr := lo.FromSlicePtrOr[string]([]*string{&str1, &str2, "fallback value"})
|
||||
// []string{"hello", "world", "fallback value"}
|
||||
```
|
||||
|
||||
### ToAnySlice
|
||||
|
||||
Returns a slice with all elements mapped to `any` type.
|
||||
|
@@ -69,6 +69,16 @@ func FromSlicePtr[T any](collection []*T) []T {
|
||||
})
|
||||
}
|
||||
|
||||
// FromSlicePtr returns a slice with the pointer values or the fallback value.
|
||||
func FromSlicePtrOr[T any](collection []*T, fallback T) []T {
|
||||
return Map(collection, func(x *T, _ int) T {
|
||||
if x == nil {
|
||||
return fallback
|
||||
}
|
||||
return *x
|
||||
})
|
||||
}
|
||||
|
||||
// ToAnySlice returns a slice with all elements mapped to `any` type
|
||||
func ToAnySlice[T any](collection []T) []any {
|
||||
result := make([]any, len(collection))
|
||||
|
@@ -131,6 +131,16 @@ func TestFromSlicePtr(t *testing.T) {
|
||||
is.Equal(result1, []string{str1, str2, ""})
|
||||
}
|
||||
|
||||
func TestFromSlicePtrOr(t *testing.T) {
|
||||
is := assert.New(t)
|
||||
|
||||
str1 := "foo"
|
||||
str2 := "bar"
|
||||
result1 := FromSlicePtrOr([]*string{&str1, &str2, nil}, "fallback")
|
||||
|
||||
is.Equal(result1, []string{str1, str2, "fallback"})
|
||||
}
|
||||
|
||||
func TestToAnySlice(t *testing.T) {
|
||||
t.Parallel()
|
||||
is := assert.New(t)
|
||||
|
Reference in New Issue
Block a user