Membaca "SELECT *" Lajur ke dalam []rentetan dalam Go
Dalam dunia pangkalan data, mengambil data daripada jadual menggunakan "SELECT " pertanyaan adalah amalan biasa, tetapi dalam dunia pengaturcaraan, bekerja secara manual dengan data sedemikian boleh menyusahkan. Artikel ini bertujuan untuk memudahkan proses membaca hasil pertanyaan "SELECT " ke dalam []hirisan rentetan dalam Go, memanfaatkan pustaka standard Go yang mantap.
Apabila berurusan dengan jadual dengan bilangan lajur yang tidak diketahui dan jenis data, cabarannya terletak pada menangkap data ke dalam bentuk berstruktur. Kaedah Imbasan yang disediakan oleh Rows membolehkan anda mengisi jenis data tertentu ke dalam pembolehubah yang dipratakrifkan, tetapi ia tidak menawarkan cara langsung untuk membaca ke dalam rentetan [].
Untuk mengatasinya, kami menggunakan teknik yang mencipta hirisan []antara muka{}, di mana setiap elemen ialah penunjuk kepada rentetan dalam hirisan rentetan []. Langkah merapatkan ini membolehkan kaedah Imbasan mengisi kepingan antara muka, yang kemudiannya boleh ditukar dengan mudah kepada []rentetan yang diingini.
Berikut ialah versi pindaan bagi contoh kod yang disediakan dalam soalan:
func dumpTable(rows *sql.Rows, out io.Writer) error { colNames, err := rows.Columns() if err != nil { return err } writer := csv.NewWriter(out) writer.Comma = '\t' readCols := make([]interface{}, len(colNames)) writeCols := make([]string, len(colNames)) for i, _ := range writeCols { readCols[i] = &writeCols[i] } for rows.Next() { err := rows.Scan(readCols...) if err != nil { return err } writer.Write(writeCols) } if err = rows.Err(); err != nil { return err } writer.Flush() return nil }
Penyelesaian ini dengan lancar merapatkan jurang antara kaedah Imbasan dan rentetan [], membolehkan anda menyimpan hasil pertanyaan "PILIH *" ke dalam format berstruktur dan boleh digunakan.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Lajur 'PILIH *' ke dalam []Keratan rentetan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!