//+build !go1.18 package reflect2 import ( "unsafe" ) // m escapes into the return value, but the caller of mapiterinit // doesn't let the return value escape. //go:noescape //go:linkname mapiterinit reflect.mapiterinit func mapiterinit(rtype unsafe.Pointer, m unsafe.Pointer) (val *hiter) func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator { return &UnsafeMapIterator{ hiter: mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj)), pKeyRType: type2.pKeyRType, pElemRType: type2.pElemRType, } }