jsonでいうとこんな感じの
{ "id": 48, "name": "foo", "entry": { "id": 36, "name": "bar", "entry": { "id": 24, "name": "baz", "entry": { "id": 12, "name": "qux" } } } }
問題
コンパイル時のinvalid recursive typeエラーは、ポインタ型にすれば解決 invalid recursive type in a struct in go - Stack Overflow
実装
package main import ( "encoding/json" "fmt" "strings" ) const data = `{ "id": 48, "name": "foo", "entry": { "id": 36, "name": "bar", "entry": { "id": 24, "name": "baz", "entry": { "id": 12, "name": "qux" } } } }` type Entry struct { ID int `json:"id"` Name string `json:"name"` Child *Entry `json:"entry"` } func main() { root := new(Entry) if err := json.NewDecoder(strings.NewReader(data)).Decode(root); err != nil { panic(err) } for entry := root; entry.Child != nil; entry = entry.Child { fmt.Printf("%s has a child: %+v\n", entry.Name, entry.Child) } }
https://play.golang.org/p/vBNfDuhLHB
参考
雑感
最近DRYな備忘録の更新が多くWETな備忘録ぜんぜん書いてないので、心が乾いている証拠だ
— エロリツイート先生 (@otiai10) 2017年6月19日
- 作者: Mat Ryer,鵜飼文敏,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/22
- メディア: 大型本
- この商品を含むブログ (2件) を見る