goversion_maprange_gte_go112.go 680 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (c) 2012-2018 Ugorji Nwoke. All rights reserved.
  2. // Use of this source code is governed by a MIT license found in the LICENSE file.
  3. // +build go1.12
  4. // +build safe
  5. package codec
  6. import "reflect"
  7. type mapIter struct {
  8. t *reflect.MapIter
  9. m reflect.Value
  10. values bool
  11. }
  12. func (t *mapIter) Next() (r bool) {
  13. return t.t.Next()
  14. }
  15. func (t *mapIter) Key() reflect.Value {
  16. return t.t.Key()
  17. }
  18. func (t *mapIter) Value() (r reflect.Value) {
  19. if t.values {
  20. return t.t.Value()
  21. }
  22. return
  23. }
  24. func (t *mapIter) Done() {}
  25. func mapRange(m, k, v reflect.Value, values bool) *mapIter {
  26. return &mapIter{
  27. m: m,
  28. t: m.MapRange(),
  29. values: values,
  30. }
  31. }