在 Go 中,將資料庫查詢結果轉換為映射切片可能具有挑戰性。但是,克服此限制是可能的。
傳統方法
傳統方法涉及將行掃描到與請求的列數相符的特定數量的參數中。這種方法效率低且不靈活。
使用 sqlx
sqlx 函式庫提供了更有效率的解決方案。透過使用 sqlx,您可以輕鬆地將行轉換為映射切片。以下程式碼示範了此過程:
package main import ( "context" "database/sql" "fmt" _ "github.com/lib/pq" // PostgreSQL driver "github.com/jmoiron/sqlx" ) type Place struct { Telcode int Name string Country string Continent string Province string Region string } func main() { db, err := sql.Open("postgres", "user=postgres password=mypassword host=localhost port=5432 dbname=mydatabase sslmode=disable") if err != nil { fmt.Printf("Error connecting to database: %v", err) return } sqlxDB := sqlx.NewDb(db, "postgres") places := []map[string]interface{}{} err = sqlxDB.Select(&places, "SELECT * FROM place ORDER BY telcode ASC") if err != nil { fmt.Printf(err) return } fmt.Printf("Places: %v", places) }
在此範例中,places 是地圖的切片,其中每個地圖代表資料庫表中的一行。映射鍵是列名,映射值是對應的列值。
自訂映射結構
您可以自訂由sqlx。例如,您可以將地圖切片替換為自訂結構切片,例如前面定義的 Place 結構。這種方法更加高效,並且不需要類型斷言。 請記住,sqlx 方法比傳統的資料庫/sql 方法更有效率,特別是在處理大型資料集時。以上是如何在 Go 中有效率地將資料庫行轉換為 Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!