package api import ( "database/sql" "log" "reflect" ) func convert[T any](rows *sql.Rows) []T { var ans []T for rows.Next() { var r T s := reflect.ValueOf(&r).Elem() log.Println(s) numCols := s.NumField() columns := make([]interface{}, numCols) log.Println(columns) for i := 0; i < numCols; i++ { field := s.Field(i) log.Println(field) columns[i] = field.Addr().Interface() } log.Println(columns) if err := rows.Scan(columns...); err != nil { log.Fatal(err) } ans = append(ans, r) } return ans }