Rumah >pembangunan bahagian belakang >Golang >Bolehkah Go Struct Literal Menetapkan Penunjuk Boolean Sebenar Tanpa Pembolehubah Tambahan?

Bolehkah Go Struct Literal Menetapkan Penunjuk Boolean Sebenar Tanpa Pembolehubah Tambahan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 07:20:11120semak imbas

Can a Go Struct Literal Directly Assign a True Boolean Pointer Without Extra Variables?

Menetapkan Penunjuk Boolean kepada True dalam Struct Literals

Soalan:

Sesuatu fungsi memerlukan penunjuk kepada nilai boolean. Bolehkah literal struct digunakan untuk menetapkan medan kepada benar tanpa memperkenalkan pembolehubah tambahan?

Jawapan:

Ya, mungkin, tetapi tidak ideal:

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

Penyelesaian ini mencipta kepingan dengan nilai boolean tunggal bernilai benar, mengindeks elemen pertamanya dan memberikan alamatnya kepada is padang. Walaupun pembolehubah baharu dielakkan, boilerplate dan ketekunan tatasusunan sandaran memberikan kelemahan.

Penyelesaian yang Lebih Baik:

  • Pembantu Fungsi:
func newTrue() *bool {
    b := true
    return &b
}
h := handler{is: newTrue()}
  • Fungsi Tanpa Nama:
h := handler{is: func() *bool { b := true; return &b }()}
  • Satu Pelapik Varian:
h := handler{is: func(b bool) *bool { return &b }(true)}

Untuk lebih banyak pilihan, rujuk "Bagaimana cara saya melakukan *int64 literal dalam Go?".

Atas ialah kandungan terperinci Bolehkah Go Struct Literal Menetapkan Penunjuk Boolean Sebenar Tanpa Pembolehubah Tambahan?. 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