Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menetapkan True kepada Penunjuk Bool dalam Go Struct Literals?

Bagaimana untuk Menetapkan True kepada Penunjuk Bool dalam Go Struct Literals?

Susan Sarandon
Lepaskan: 2024-12-08 10:49:10
asal
975 orang telah melayarinya

How to Assign True to a Bool Pointer in Go Struct Literals?

Tugasan Penunjuk dalam Huruf Struktur: Panduan Ringkas

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){}
Salin selepas log masuk

Untuk menetapkan medan is kepada benar dalam literal struct, seseorang mungkin menganggap tatatanda mudah wujud:

handler{is: &true}  // This is invalid
Salin selepas log masuk

Malangnya, ini bukan sintaks Go yang sah. Untuk menetapkan penunjuk bool kepada benar, penyelesaian diperlukan.

Membuat Pembalut Slice

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
Salin selepas log masuk

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.

Menggunakan Fungsi Pembantu

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
}
Salin selepas log masuk

Fungsi ini kemudiannya boleh digunakan dalam struct literal:

h := handler{is: newTrue()}
fmt.Println(*h.is) // Prints true
Salin selepas log masuk

Tanpa Nama Fungsi dan Satu Pelapik

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
Salin selepas log masuk

Atau varian:

h := handler{is: func(b bool) *bool { return &b }(true)}
Salin selepas log masuk

Ini membenarkan sintaks ringkas tetapi boleh kurang dibaca daripada fungsi pembantu pendekatan.

Kesimpulan

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan