In Go mysql driver is causing a lot of code bloat -


i have myself mysql database , able connect fine, perform queries, insert, select, update etc etc.

what bugging me though find myself writing same code on , on again , whenever try refactor in order create code can reuse find myself hitting errors or find myself hitting solutions seem go against how mysql driver meant used.

i have function example quick , dirty try solve problem:

func returnmaterialbyname(material string) []byte {      var name string      db, err := sql.open("mysql",data_source_name )     defer db.close();      stmt, err := db.prepare(getmaterials)     if err != nil {         log.fatal(err)     }     defer stmt.close()     rows, err := stmt.query(material)     if err != nil {         log.fatal(err)     }     defer rows.close()      materials := make([]material, 0)      rows.next() {         err := rows.scan(&name)         if err != nil {             log.fatal(err)         }          m := material{name}          materials = append(materials, m)      }      if err = rows.err(); err != nil {         log.fatal(err)     }      materialarray, err := json.marshal(materials)      if err !=nil {         log.fatal(err);     }      return materialarray } 

what finding 2 lines in func change select statements

err := rows.scan(&name); 

and additional code add struct marshaled json.

one solution found seemed of solution create map of key value pairs instead of struct seemed little involved , can't imagine expected write of same code on , on again.

so question, how 1 turn rather large function smaller reused?


Comments