Goでmap[string]interface{}
を結合したいとき、 mergo
ライブラリを使うとシンプルに結合できる。
map[string]interface{} を使う場合
m1 := map[string]interface{}{
"a": 0,
"b": 1,
}
m2 := map[string]interface{}{
"a": 2,
"c": 3,
}
mergo.Merge(&m1, m2)
// Will print
//map[string]interface {}{"a": 0, "b": 1, "c": 3}
mergo.Merge
の他に、 mergo.MergeWithOverwrite
などもあるが略。
struct を使う場合
デフォルトの方法
type Foo struct {
A string
B int64
}
func main() {
src := Foo{
A: "one",
B: 2,
}
dest := Foo{
A: "two",
}
mergo.Merge(&dest, src)
// Will print
Foo{
A: "two",
B: 2,
}