Menetapkan Penunjuk Bool dalam Huruf Struktur
Dalam Go, apabila menghantar penuding kepada bool ke dalam fungsi, adalah mungkin untuk menetapkan nilai medan bool dalam literal struct secara langsung. Walau bagaimanapun, sintaks standard memerlukan penentuan pengecam baharu, seperti yang dilihat di bawah:
func check(is handler){} type handler struct{ is *bool } func main() { var x bool = true check(handler{is: &x}) }
Untuk memintas keperluan ini dan menetapkan penunjuk bool kepada benar secara langsung dalam literal struct, terdapat beberapa pendekatan:
Pilihan 1: Menggunakan Slice
Kaedah ini mencipta kepingan dengan satu bool of value true, mengindeks elemen pertamanya dan mengambil alamatnya:
h := handler{is: &[]bool{true}[0]}
Walaupun teknik ini mengelak daripada mentakrifkan pembolehubah baharu, ia memperkenalkan boilerplate yang tidak perlu dan meninggalkan tatasusunan sandaran dalam ingatan.
Pilihan 2: Menggunakan Fungsi Pembantu
Penyelesaian yang lebih optimum ialah mencipta fungsi pembantu yang menjana penunjuk bool dengan nilai sebenar:
func newTrue() *bool { b := true return &b }
Dengan fungsi ini, menetapkan penunjuk bool dalam literal struct menjadi:
h := handler{is: newTrue()}
Pilihan 3 : Menggunakan Fungsi Tanpa Nama Satu Pelapik
Kaedah lain melibatkan penggunaan fungsi tanpa nama untuk mencapai tugas yang sama dalam satu baris:
h := handler{is: func() *bool { b := true; return &b }()}
Pilihan 4: Varian dengan Fungsi Tanpa Nama
Sedikit variasi pendekatan sebelumnya:
h := handler{is: func(b bool) *bool { return &b }(true)}
Teknik ini menyediakan alternatif untuk menetapkan penunjuk bool kepada benar dalam literal struktur tanpa memerlukan pengecam tambahan atau tidak diperlukan atas kepala. Pembangun boleh memilih pendekatan yang paling sesuai dengan keperluan dan pilihan gaya mereka.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Penunjuk Bool kepada True dengan Cekap dalam Go Struct Literal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!