MCPcopy Create free account
hub / github.com/kataras/iris / lookupStructFieldPtrs

Method lookupStructFieldPtrs

x/sqlx/sqlx.go:188–214  ·  view source on GitHub ↗
(typ reflect.Type, val reflect.Value, columnTypes []*sql.ColumnType)

Source from the content-addressed store, hash-verified

186}
187
188func (r *Row) lookupStructFieldPtrs(typ reflect.Type, val reflect.Value, columnTypes []*sql.ColumnType) ([]interface{}, error) {
189 fieldPtrs := make([]interface{}, 0, len(columnTypes))
190
191 for _, columnType := range columnTypes {
192 columnName := columnType.Name()
193 tableColumn, ok := r.Columns[columnName]
194 if !ok {
195 continue
196 }
197
198 // TODO: when go 1.18 released, replace with that:
199 /*
200 tableColumnField, err := val.FieldByIndexErr(tableColumn.FieldIndex)
201 if err != nil {
202 return nil, fmt.Errorf("column: %q: %w", tableColumn.Name, err)
203 }
204 */
205 tableColumnField := val.FieldByIndex(tableColumn.FieldIndex)
206
207 tableColumnFieldType := tableColumnField.Type()
208
209 fieldPtr := reflect.NewAt(tableColumnFieldType, unsafe.Pointer(tableColumnField.UnsafeAddr())).Elem().Addr().Interface()
210 fieldPtrs = append(fieldPtrs, fieldPtr)
211 }
212
213 return fieldPtrs, nil
214}

Callers 1

bindSingleMethod · 0.95

Calls 2

TypeMethod · 0.80
NameMethod · 0.65

Tested by

no test coverage detected