This is a creation in Article, where the information may have evolved or changed.
Because you want to assign a value to some members of a struct, but have no specific name, the JSON name of the tag is indexed and assigned by JSON name one by one
//assigning members in a struct to JSON namesFunc Setstructfieldbyjsonname (PTRInterface{}, Fields map[string]Interface{}) {logger. Debug ("Fields :", Fields) V:= Reflect. ValueOf (PTR). Elem ()//The struct variable forI: =0; I < V.numfield (); i++{fieldInfo:= V.type (). Field (i)//a reflect. StructfieldTag: = Fieldinfo.tag//a reflect. StructtagName: = tag. Get ("JSON") ifName = =""{Name=strings. ToLower (fieldinfo.name)}//remove the comma after the content such as ' JSON: ' Voucher_usage,omitempty 'Name = Strings. Split (Name,",")[0] Logger. Debug ("Jsonname:", name)ifValue, OK: =Fields[name]; OK {logger. Debug ("Fieldinfo.name:", Fieldinfo.name)//Assigning a value to a struct//Guaranteed data type consistency when assigning valuesLogger. Debug ("Type 1:", reflect. ValueOf (value). Type (),"Type 2:", V.fieldbyname (fieldinfo.name). Type ())ifReflect. ValueOf (value). Type () = =v.fieldbyname (fieldinfo.name). Type () {v.fieldbyname (fieldinfo.name). Set (reflect. ValueOf (value)) }}}return}