go_below_118.go raw

   1  //+build !go1.18
   2  
   3  package reflect2
   4  
   5  import (
   6  	"unsafe"
   7  )
   8  
   9  // m escapes into the return value, but the caller of mapiterinit
  10  // doesn't let the return value escape.
  11  //go:noescape
  12  //go:linkname mapiterinit reflect.mapiterinit
  13  func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) (val *hiter)
  14  
  15  func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator {
  16  	return &UnsafeMapIterator{
  17  		hiter:      mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)),
  18  		pKeyRType:  type2.pKeyRType,
  19  		pElemRType: type2.pElemRType,
  20  	}
  21  }