Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menetapkan True kepada Penunjuk Bool dalam Go Struct Literals?
Dalam Go, memberikan nilai kepada penunjuk dalam literal struct boleh menjadi rumit. Khususnya, menetapkan penunjuk bool kepada benar boleh memerlukan penyelesaian.
Pertimbangkan fungsi berikut yang menerima penunjuk bool:
import "fmt" func main() { fmt.Println("Hello, playground") check(handler{is: new(bool)}) } type handler struct{ is *bool } func check(is handler){}
Untuk menetapkan medan is kepada benar dalam literal struct, seseorang mungkin menganggap tatatanda mudah wujud:
handler{is: &true} // This is invalid
Malangnya, ini bukan sintaks Go yang sah. Untuk menetapkan penunjuk bool kepada benar, penyelesaian diperlukan.
Satu kaedah ialah mencipta kepingan yang mengandungi nilai bool tunggal true dan mengindeks elemen pertamanya:
h := handler{is: &[]bool{true}[0]} fmt.Println(*h.is) // Prints true
Walaupun ini membolehkan anda menetapkan penuding kepada benar, ia tidak semestinya mencipta tatasusunan hirisan yang akan kekal dalam ingatan sehingga alamat kepada elemen pertamanya dipadamkan.
Penyelesaian yang lebih bersih adalah untuk mencipta fungsi pembantu yang mengembalikan penunjuk kepada pembolehubah bool yang dimulakan kepada benar:
func newTrue() *bool { b := true return &b }
Fungsi ini kemudiannya boleh digunakan dalam struct literal:
h := handler{is: newTrue()} fmt.Println(*h.is) // Prints true
Pilihan lain untuk menetapkan penuding kepada benar termasuk fungsi tanpa nama:
h := handler{is: func() *bool { b := true; return &b }()} fmt.Println(*h.is) // Prints true
Atau varian:
h := handler{is: func(b bool) *bool { return &b }(true)}
Ini membenarkan sintaks ringkas tetapi boleh kurang dibaca daripada fungsi pembantu pendekatan.
Semasa menetapkan penunjuk bool kepada benar dalam literal struct mungkin kelihatan seperti tugas yang mudah, ia memerlukan sintaks khusus atau penggunaan penyelesaian. Mengetahui kaedah ini memberi kuasa kepada pengaturcara Go untuk menetapkan nilai secara berkesan kepada penunjuk dalam pelbagai situasi.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan True kepada Penunjuk Bool dalam Go Struct Literals?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!