2017-06-11 8 views
0

このケースではappendを使用できないようです。どんな助けもありがとう。あなたは、同じキーに関連付けられた複数の値を格納するマップでは、値型は、そのために適していなければならない場合appendの最初の引数はsliceでなければなりません。 have struct - golang map

package main 

import (
    "fmt" 
) 

type C struct { 
    value5 string 
    value6 string 
} 

type B struct { 
    value3 string 
    value4 C 
} 

type A struct { 
    value1 string 
    value2 B 
} 

type X struct{ 
    key  int 
} 
func main() { 

    letSee := map[X]A{} 
    letSee[X{1}]=A{"T",B{"T1",C{"T11","T12"}}} 
    letSee[X{1}]=append(letSee[X{1}], A{"L",B{"L1",C{"L11","L12"}}}) 

    fmt.Println(letSee) 
} 

https://play.golang.org/p/R4gDO9MPBS

+0

はAのスライスにXをマップするマップを持っているあなたの意図ですか? letSee:= make(map [X] [] A) –

答えて

1

append

最初の引数は、スライスでなければなりません。構造体はありませんが、sliceが最適です。

だからあなたの値の型が[]Aに変更します。

letSee := map[X][]A{} 
letSee[X{1}] = []A{A{"T", B{"T1", C{"T11", "T12"}}}} 
letSee[X{1}] = append(letSee[X{1}], A{"L", B{"L1", C{"L11", "L12"}}}) 

fmt.Printf("%+v", letSee) 

は出力(Go Playground上でそれを試してみてください):

map[{key:1}:[{value1:T value2:{value3:T1 value4:{value5:T11 value6:T12}}} 
    {value1:L value2:{value3:L1 value4:{value5:L11 value6:L12}}}]] 
+0

ありがとうございます。 – rwks

関連する問題