{{~if ___top_module != ''~}} package {{__top_module}}; {{~end~}} {{~ go_full_name = full_name __this key_type = __this.key_ttype value_type = __this.value_ttype index_field = __this.index_field ~}} import "{{__luban_module_name}}" {{~if __this.is_map_table~}} type {{go_full_name}} struct { _dataMap map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}} _dataList []{{declaring_type_name value_type}} } func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) { if size, err := _buf.ReadSize() ; err != nil { return nil, err } else { _dataList := make([]{{declaring_type_name value_type}}, 0, size) dataMap := make(map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}}) for i := 0 ; i < size ; i++ { if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil { return nil, err2 } else { _dataList = append(_dataList, _v) {{~if value_type.is_dynamic ~}} {{~for child in value_type.def_bean.hierarchy_not_abstract_children~}} if __v, __is := _v.(*{{full_name child}}) ; __is { dataMap[__v.{{format_field_name __code_style index_field.name}}] = _v continue } {{~end~}} {{~else~}} dataMap[_v.{{format_field_name __code_style index_field.name}}] = _v {{~end~}} } } return &{{go_full_name}}{_dataList:_dataList, _dataMap:dataMap}, nil } } func (table *{{go_full_name}}) GetDataMap() map[{{declaring_type_name key_type}}]{{declaring_type_name value_type}} { return table._dataMap } func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} { return table._dataList } func (table *{{go_full_name}}) Get(key {{declaring_type_name key_type}}) {{declaring_type_name value_type}} { return table._dataMap[key] } {{~else if __this.is_list_table~}} type {{go_full_name}} struct { _dataList []{{declaring_type_name value_type}} } func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) { if size, err := _buf.ReadSize() ; err != nil { return nil, err } else { _dataList := make([]{{declaring_type_name value_type}}, 0, size) for i := 0 ; i < size ; i++ { if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil { return nil, err2 } else { _dataList = append(_dataList, _v) } } return &{{go_full_name}}{_dataList:_dataList}, nil } } func (table *{{go_full_name}}) GetDataList() []{{declaring_type_name value_type}} { return table._dataList } func (table *{{go_full_name}}) Get(index int) {{declaring_type_name value_type}} { return table._dataList[index] } {{~else~}} import "errors" type {{go_full_name}} struct { _data {{declaring_type_name value_type}} } func New{{go_full_name}}(_buf *luban.ByteBuf) (*{{go_full_name}}, error) { if size, err := _buf.ReadSize() ; err != nil { return nil, err } else if size != 1 { return nil, errors.New(" size != 1 ") } else { if _v, err2 := New{{full_name value_type.def_bean}}(_buf); err2 != nil { return nil, err2 } else { return &{{go_full_name}}{_data:_v}, nil } } } func (table *{{go_full_name}}) Get() {{declaring_type_name value_type}} { return table._data } {{~end~}}