github.com/zerosnake0/jzon@v0.0.8/val_encoder_native_map_below_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 iter := mapiterinit(enc.mapRType, ptr) 24 for i := 0; iter.key != nil; i++ { 25 enc.keyEncoder.Encode(iter.key, s) 26 if s.Error != nil { 27 return 28 } 29 enc.elemEncoder.Encode(iter.elem, s, nil) 30 if s.Error != nil { 31 return 32 } 33 mapiternext(iter) 34 } 35 s.ObjectEnd() 36 }