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
DDDasal
2024-12-02 09:21:12160semak imbas

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

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!

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