Jaki jest najlepszy sposób na scalenie par klucz-wartość z jednej mapy w drugą w Go? Używam prostej pętli, ale zastanawiałem się, czy istnieje coś takiego jak array_merge PHP, którego można użyć.

bigmap := map[string]string{"a":"a", "b":"b", "c":"c"}
smallmap := map[string]string{"d":"d"}

for k, v := range smallmap {
    bigmap[k] = v
}
go
16
code_martial 29 sierpień 2012, 10:43

2 odpowiedzi

Najlepsza odpowiedź

Nie, nie ma.

Nie byłoby to tak przydatne, ponieważ napisany przez Ciebie przejrzysty kod jest wystarczająco krótki i ma tę zaletę, że nie ukrywa implementacji.

Możesz wykonać własną funkcję, jeśli jej potrzebujesz:

func addmap(a map[string]string, b map[string]string) {
    for k,v := range b {
        a[k] = v
    }
}

addmap(bigmap, smallmap)

Ale ponieważ Go nie ma generyków, musiałbyś stworzyć inną funkcję dla każdego konkretnego typu mapy, którego chcesz użyć.

9
Denys Séguret 29 sierpień 2012, 18:30

AFAIK, nie ma do tego funkcji wbudowanej ani bibliotecznej. I myślę, że twój kod jest tak dobry, jak to tylko możliwe.

1
zzzz 29 sierpień 2012, 11:25