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
Susan Sarandonasal
2024-12-08 10:49:10932semak imbas

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){}

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.

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

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
}

Fungsi ini kemudiannya boleh digunakan dalam struct literal:

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

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

Atau varian:

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

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:
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