1.rangeではbuildできない場合
<条件>
・MAP(map[string]interface {}型)をinterface型でjson.Unmarshal
<操作>
・rangeで値を取りだす
<エラー>
・buildで「cannot range over *_data.TaxRate (type interface {})」
var _data interface{}; json.Unmarshal([]byte(Totals.Data), &_data); for _, t := range *_data.TaxRate { /* cannot range over *_data.TaxRate (type interface {}) */ }
2.データの確認code
fmt.Println("TaxRate=",*_data.TaxRate);
3.結果
TaxRate= map[10:200 8:784]
4.rangeの代わりにreflectを使って取り出す
t := reflect.ValueOf(*_data.EachTaxRate).Type() fmt.Println(t); iter := reflect.ValueOf(*_data.EachTaxRate).MapRange() for iter.Next() { k := iter.Key() v := iter.Value() fmt.Println(k,":",v); }
5.結果
map[string]interface {} 8 : 784 10 : 200