Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengimbas Struktur Bersarang dengan Betul ke dalam Go Structs Menggunakan SQLX?

Bagaimana untuk Mengimbas Struktur Bersarang dengan Betul ke dalam Go Structs Menggunakan SQLX?

Barbara Streisand
Barbara Streisandasal
2024-11-25 12:13:12710semak imbas

How to Correctly Scan Nested Structs into Go Structs Using SQLX?

SQLX Nested Struct Scanning

Apabila cuba mengimbas hasil pertanyaan ke dalam struct bersarang menggunakan SQLX, adalah penting untuk memahami pendekatan yang betul.

Dalam contoh yang diberikan, ralat tidak padan jenis berlaku kerana struct Alamat tidak betul tertanam dalam struct Pelanggan. Untuk menangani isu ini, pembenaman diperlukan.

Struktur Terbenam

Struktur terbenam membenarkan akses kepada medan terbenam tanpa perlu meletakkan awalannya dengan nama jenis terbenam. Ini memudahkan akses medan dan memastikan medan daripada struct terbenam diisi dengan betul semasa mengimbas hasil pertanyaan.

type Customer struct {
    Id        int
    Name      string
    Address   // Embedded struct without tags
}

type Address struct {
    Street string  `db:"street"`
    City   string  `db:"city"`
}

Pertanyaan Kemas Kini

Dengan membenamkan struct Alamat, SQLX akan menetapkan nilai secara automatik daripada hasil pertanyaan ke medan yang sesuai berdasarkan pangkalan data mereka tag.

customer := models.Customer{}
err := db.Get(&customer, `select * from users where>

JSON Marshalling

Perhatikan bahawa membenamkan struct Alamat akan meratakan output JSON, mengalih keluar objek alamat bersarang. Untuk mengekalkan struktur bersarang, pertimbangkan untuk menggunakan penukaran jenis untuk memetakan medan kembali kepada struktur asal.

Atas ialah kandungan terperinci Bagaimana untuk Mengimbas Struktur Bersarang dengan Betul ke dalam Go Structs Menggunakan SQLX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn