golang MAPからreflectでkey,valueを取り出す

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