Rumah >pembangunan bahagian belakang >Golang >Cara Terbaik Memulakan Penunjuk Bool dalam Literal Go Struct?

Cara Terbaik Memulakan Penunjuk Bool dalam Literal Go Struct?

Linda Hamilton
Linda Hamiltonasal
2024-12-07 19:33:15677semak imbas

How to Best Initialize a Bool Pointer in a Go Struct Literal?

Cara Memulakan Penunjuk Bool dalam Huruf Struktur

Dalam Go, struct boleh mempunyai medan yang menjadi penunjuk kepada nilai bool. Apabila mencipta literal struct, anda boleh menentukan nilai medan penunjuk bool dengan menggunakan operator arahan (*). Walau bagaimanapun, terdapat pelbagai cara untuk mendekati perkara ini.

Pilihan 1: Menggunakan Slice

Satu pilihan ialah mencipta kepingan dengan nilai bool tunggal true dan kemudian ambil alamat elemen pertamanya:

h := handler{is: &[]bool{true}[0]}

Kaedah ini mengelakkan mentakrifkan pembolehubah baharu tetapi memperkenalkan boilerplate tambahan dan overhead.

Pilihan 2: Menggunakan Fungsi Pembantu

Penyelesaian yang lebih bersih adalah untuk mentakrifkan fungsi pembantu untuk mencipta nilai *bool dengan nilai yang dikehendaki:

func newTrue() *bool {
    b := true
    return &b
}

h := handler{is: newTrue()}

Pilihan 3: Menggunakan Tanpa Nama Fungsi

Anda juga boleh menggunakan fungsi tanpa nama untuk mencipta *nilai bool dengan nilai yang dikehendaki dalam satu baris:

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

Pilihan 4: Menggunakan Fungsi dengan Parameter

Sebagai alternatif, anda boleh menggunakan fungsi yang mengambil parameter boolean dan mengembalikan *bool value:

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

Pilihan terbaik bergantung pada keperluan khusus aplikasi anda. Pertimbangkan faktor seperti kesederhanaan kod, kecekapan dan kebolehbacaan.

Atas ialah kandungan terperinci Cara Terbaik Memulakan Penunjuk Bool dalam Literal Go Struct?. 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