1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-04 12:52:28 +08:00

feat(maputil): add GetValue (#243)

* add maputil.GetValue

* rename GetOrDefault
This commit is contained in:
yunxuan
2024-09-10 15:08:36 +08:00
committed by GitHub
parent 7e85a0ed7d
commit 69f9c74bcb
4 changed files with 110 additions and 0 deletions

View File

@@ -657,3 +657,12 @@ func convertMap(src reflect.Value, dst reflect.Value) error {
return nil
}
// GetOrDefault returns the value of the given key or a default value if the key is not present.
// Play: https://go.dev/play/p/99QjSYSBdiM
func GetOrDefault[K comparable, V any](m map[K]V, key K, defaultValue V) V {
if v, ok := m[key]; ok {
return v
}
return defaultValue
}

View File

@@ -869,3 +869,22 @@ func TestBaseType(t *testing.T) {
MapTo(tc["u64"], &number)
assert.EqualValues(64, number)
}
func TestGetOrDefault(t *testing.T) {
t.Parallel()
assert := internal.NewAssert(t, "GetOrDefault")
m1 := map[int]string{
3: "c",
1: "a",
4: "d",
2: "b",
}
result1 := GetOrDefault(m1, 1, "123")
assert.Equal("a", result1)
result2 := GetOrDefault(m1, 5, "123")
assert.Equal("123", result2)
}