Struct adalah salah satu tipe data utama dan populer digunakan yang disediakan dalam bahasa pemrograman Go. Banyak paket di berbagai fungsi, dari paket database hingga ORM, dan beberapa kerangka kerja web menggunakan struct untuk penguraian data yang mudah dan operasi lainnya.
Validasi struktur adalah tugas umum di Go, dan paket validator Go menyediakan cara sederhana dan efisien untuk memvalidasi struct dalam proyek Anda.
Apa itu Paket Validator Go
Itu Pergi validator package mengimplementasikan validasi nilai untuk bidang struct dan individual berdasarkan tag yang ditentukan pada deklarasi struct.
Paket validator Go menyediakan fitur untuk validasi lintas-bidang dan lintas-struktur menggunakan tag, irisan, larik, dan penyelaman peta yang memungkinkan tingkat validasi bidang multidimensi, validasi bidang khusus, ekstraksi nama bidang yang ditentukan khusus, pesan kesalahan yang dapat disesuaikan, dan dukungan untuk populer
Kerangka Gin sebagai validator default untuk paket.Jalankan salah satu dari perintah ini di terminal direktori kerja Anda untuk menginstal validator kemasan.
pergi dapatkan gopkg.in/pergi-playground/validator.v9
pergi dapatkan github.com/pergi-playground/validator/v10
Versi adalah akhiran dari URL. Perintah pertama menginstal versi 9, dan yang kedua menginstal versi 10 dari paket.
Setelah menginstal paket, Anda dapat mengimpor paket ke proyek Anda tergantung pada versi yang Anda instal.
impor (
"gopkg.in/go-playground/validator.v9"
)
Anda sekarang dapat melanjutkan untuk menggunakan paket validator Go. Jika ada masalah dengan penginstalan Anda, coba instal ulang/upgrade ke versi Go terbaru.
Memvalidasi Struktur Dengan Paket Validator
Anda harus membuat instance dari validator. Mengesahkan struct, tentukan struct yang ingin Anda validasi menggunakan tag validasi untuk menentukan aturan validasi untuk bidang.
Inilah cara Anda dapat membuat instance dari validator. Mengesahkan struct.
fungsiutama() {
validasi := validator. Baru()
}
Anda dapat menentukan struct yang ingin divalidasi dengan menentukan tag untuk field, sehingga menetapkan aturan validasi. Tag validasi adalah anotasi khusus dari definisi bidang struct yang menentukan aturan.
Ini adalah struct reguler untuk validasi.
jenis Pengguna struct {
Nama rangkaian
Usia int
Surel rangkaian
}
Ini contoh struct, siap untuk validasi.
jenis Pengguna struct {
Nama rangkaian`validasi:"wajib"`
Usia int`validasi:"gte=0,lte=130"`
Surel rangkaian`validasi:"wajib, email"`
}
Dalam contoh ini, Anda menentukan Nama bidang seperti yang diperlukan pada instantiasi, the Usia bidang harus lebih besar dari atau sama dengan 0 dan kurang dari atau sama dengan 130, dan Surel bidang wajib diisi dan harus berupa alamat email yang valid pada pembuatan instance.
Tag validasi yang berbeda tersedia dalam paket validator Go, termasuk tag untuk bidang yang wajib diisi, nilai minimum dan maksimum, dan ekspresi reguler. Anda dapat menemukan daftar lengkap dari tag validasi yang tersedia dalam dokumentasi untuk paket validator Go.
Setelah Anda menentukan struct yang ingin Anda validasi dan menentukan aturan validasi untuk setiap bidang, Anda dapat menggunakan Struktur metode dari validator. Mengesahkan struct untuk memvalidasi struct.
pengguna := Pengguna{
// Nama tidak dipakai
Usia: 3990000,
Surel: "[email protected]",
}
// perhatikan bahwa bidang Nama dan Usia gagal validasi
err := validasi. Struktur (pengguna)
jika salah!= nol {
// Struktur tidak valid
}
Itu Struktur metode mengembalikan kesalahan jika ada kesalahan validasi, dan Anda dapat menangani kesalahan berdasarkan operasi Anda.
Anda dapat mengakses kesalahan ini menggunakan Kesalahan Validasi metode kesalahan.
jika salah!= nol {
untuk _, salah := jangkauan err.(validator. Kesalahan Validasi) {
fmt. Cetak (salah. Bidang(), salah. Menandai())
}
}
Itu Kesalahan Validasi metode akan mengembalikan nama setiap bidang dengan kesalahan validasi dan tag validasi yang menyebabkan kesalahan.
Anda juga dapat menentukan tag validasi khusus jika persyaratan validasi khusus bukan bagian dari tag bawaan.
Anda dapat menggunakan DaftarValidasi metode dari validator. Mengesahkan struct. Itu DaftarValidasi metode membutuhkan dua argumen; nama tag validasi dan fungsi validasi. Fungsi validasi adalah fungsi panggilan balik yang dipanggil untuk setiap bidang yang memiliki tag validasi khusus, dan fungsi tersebut harus dikembalikan BENAR jika bidangnya valid dan PALSU jika sebaliknya.
Berikut adalah contoh definisi tag validasi khusus. Tag memvalidasi bidang untuk angka genap.
mengesahkan. DaftarValidasi("bahkan", fungsi(validator fl. Tingkat Bidang)bool {
// Cobalah untuk mendapatkan nilai bidang sebagai int
nilai, oke := fl. Bidang().Antarmuka().(int)
jika !Oke {
// Jika nilai bidang bukan int, kembalikan salah
kembaliPALSU
}
// Kembalikan benar jika nilainya genap, salah, jika tidak
kembali nilai % 2 == 0
})
Kode menentukan tag validasi khusus bahkan menggunakan DaftarValidasi metode dari validator. Mengesahkan struct. Anda menentukan tag validasi menggunakan fungsi yang menggunakan satu jenis argumen validator. Tingkat Bidang.
Anda sekarang dapat menggunakan tag validasi khusus dalam definisi struct dengan cara yang sama seperti yang Anda lakukan untuk tag validasi bawaan.
jenis Struktur Saya struct {
Nilai int`memvalidasi:"bahkan"`
}
Ada Lebih Banyak Struktur yang Harus Dilakukan
Struct adalah warga negara kelas satu di Go, dan ada banyak hal yang dapat Anda lakukan dengan struct. Jika Anda terbiasa dengan bahasa berorientasi objek murni, Anda dapat menggunakan struct Go untuk mengoperasikan data seperti yang Anda lakukan dengan kelas.