go_above_118.go (552B)
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, it *hiter) 14 15 func (type2 *UnsafeMapType) UnsafeIterate(obj unsafe.Pointer) MapIterator { 16 var it hiter 17 mapiterinit(type2.rtype, *(*unsafe.Pointer)(obj), &it) 18 return &UnsafeMapIterator{ 19 hiter: &it, 20 pKeyRType: type2.pKeyRType, 21 pElemRType: type2.pElemRType, 22 } 23 }