mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-17 19:22:28 +08:00
refact: preallocate in Merge map
This commit is contained in:
@@ -70,7 +70,12 @@ func ValuesBy[K comparable, V any, T any](m map[K]V, mapper func(item V) T) []T
|
|||||||
// Merge maps, next key will overwrite previous key.
|
// Merge maps, next key will overwrite previous key.
|
||||||
// Play: https://go.dev/play/p/H95LENF1uB-
|
// Play: https://go.dev/play/p/H95LENF1uB-
|
||||||
func Merge[K comparable, V any](maps ...map[K]V) map[K]V {
|
func Merge[K comparable, V any](maps ...map[K]V) map[K]V {
|
||||||
result := make(map[K]V, 0)
|
size := 0
|
||||||
|
for i := range maps {
|
||||||
|
size += len(maps[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
result := make(map[K]V, size)
|
||||||
|
|
||||||
for _, m := range maps {
|
for _, m := range maps {
|
||||||
for k, v := range m {
|
for k, v := range m {
|
||||||
|
|||||||
@@ -107,14 +107,14 @@ func TestMerge(t *testing.T) {
|
|||||||
2: "b",
|
2: "b",
|
||||||
}
|
}
|
||||||
m2 := map[int]string{
|
m2 := map[int]string{
|
||||||
1: "1",
|
2: "c",
|
||||||
3: "2",
|
3: "d",
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := map[int]string{
|
expected := map[int]string{
|
||||||
1: "1",
|
1: "a",
|
||||||
2: "b",
|
2: "c",
|
||||||
3: "2",
|
3: "d",
|
||||||
}
|
}
|
||||||
acturl := Merge(m1, m2)
|
acturl := Merge(m1, m2)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user