Penegasan Jenis Golang: Mengendalikan Penukaran Jenis Pangkalan Data
Dalam Go, penegasan jenis membenarkan kami menukar nilai kepada jenis yang berbeza berdasarkannya jenis sebenar. Ini berguna apabila bekerja dengan jenis dinamik atau melaksanakan antara muka tersuai.
Pertimbangkan senario di mana kami mencipta jenis tersuai yang dipanggil Peranan berdasarkan rentetan dan ingin menggunakannya dengan pemacu pangkalan data. Untuk melakukan ini, kami perlu melaksanakan antara muka Penilai dan Pengimbas.
Walau bagaimanapun, semasa melaksanakan antara muka ini, kami mungkin menghadapi ralat:
cannot convert value.(string) (type string) to type *Role
Penyelesaian untuk Fungsi Imbasan:
Fungsi Imbasan digunakan apabila mendapatkan semula data daripada pangkalan data. Isu timbul kerana kami cuba menukar nilai rentetan jenis terus kepada *Penunjuk Peranan. Sebaliknya, kita harus membatalkan rujukan penunjuk r dan menetapkan nilai nilai kepadanya, seperti:
func (r *Role) Scan(value interface{}) error { *r = Role(value.(string)) return nil }
Penyelesaian untuk Fungsi Nilai:
Fungsi Nilai ialah digunakan semasa memasukkan atau mengemas kini data dalam pangkalan data. Tandatangan yang salah telah diberikan sebelum ini. Tandatangan yang betul ialah:
func (r Role) Value() (driver.Value, error) { return string(r), nil }
Perhatikan bahawa fungsi ini tidak mengendalikan atau menghasilkan nilai NULL.
Dengan mengikuti pembetulan ini, kami boleh berjaya melaksanakan penukaran jenis untuk jenis Peranan tersuai kami apabila bekerja dengan pemacu pangkalan data.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Penukaran Jenis Apabila Bekerja dengan Pangkalan Data dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!