Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menetapkan Penunjuk Bool kepada True dengan Cekap dalam Go Struct Literal?

Bagaimanakah Saya Boleh Menetapkan Penunjuk Bool kepada True dengan Cekap dalam Go Struct Literal?

DDD
Lepaskan: 2024-12-02 09:21:12
asal
156 orang telah melayarinya

How Can I Efficiently Set a Bool Pointer to True within a Go Struct Literal?

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

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

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

Dengan fungsi ini, menetapkan penunjuk bool dalam literal struct menjadi:

h := handler{is: newTrue()}
Salin selepas log masuk

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

Pilihan 4: Varian dengan Fungsi Tanpa Nama

Sedikit variasi pendekatan sebelumnya:

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

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!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan