github.com/zerosnake0/jzon@v0.0.8/val_encoder_native_map_above_go118.go (about) 1 //+build go1.18 2 3 package jzon 4 5 import ( 6 "unsafe" 7 ) 8 9 func (enc *directMapEncoder) Encode(ptr unsafe.Pointer, s *Streamer, _ *EncOpts) { 10 if s.Error != nil { 11 return 12 } 13 if ptr == nil { 14 s.Null() 15 return 16 } 17 ptr = *(*unsafe.Pointer)(ptr) 18 if ptr == nil { 19 s.Null() 20 return 21 } 22 s.ObjectStart() 23 var iter hiter 24 mapiterinit(enc.mapRType, ptr, &iter) 25 for i := 0; iter.key != nil; i++ { 26 enc.keyEncoder.Encode(iter.key, s) 27 if s.Error != nil { 28 return 29 } 30 enc.elemEncoder.Encode(iter.elem, s, nil) 31 if s.Error != nil { 32 return 33 } 34 mapiternext(&iter) 35 } 36 s.ObjectEnd() 37 }