Rumah > pembangunan bahagian belakang > Golang > Bolehkah Anda Mencipta Struktur Tidak Berubah dalam Go?

Bolehkah Anda Mencipta Struktur Tidak Berubah dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-12 03:32:02
asal
1112 orang telah melayarinya

Can You Create Immutable Structs in Go?

Struktur Tak Berubah dalam Go

Soalan: Adakah layak untuk mencipta struktur tidak berubah dalam Go, memastikan bahawa sekali dimulakan, hanya operasi baca boleh dilakukan pada medannya tanpa mengubah suai nilainya? Jika ya, bagaimanakah ia boleh dicapai?

Jawapan:

Dalam Go, struct sememangnya boleh berubah. Walau bagaimanapun, adalah mungkin untuk membuat struct baca sahaja di luar pakejnya dengan menggunakan teknik tertentu. Begini cara ia boleh dilakukan:

Mentakrifkan Struktur Kekal:

Tentukan struct dengan medan bukan dieksport (medan bermula dengan huruf kecil). Ini menghalang akses terus ke medan dari luar pakej.

package mypackage

type myReadOnly struct {
  value int
}
Salin selepas log masuk

Menyediakan Fungsi Pembaca:

Buat fungsi pembaca yang boleh mengakses medan peribadi struct. Fungsi ini akan mengembalikan salinan medan, memastikan nilai asal kekal tidak diubah suai.

func (s myReadOnly) Value() int {
  return s.value
}
Salin selepas log masuk

Memulakan Struktur Tidak Boleh Ubah:

Buat fungsi yang memulakan struct dan mengembalikan contoh. Fungsi ini digunakan untuk mencipta kejadian baharu bagi struct tidak berubah.

func NewMyReadOnly(value int) myReadOnly{
  return myReadOnly{value: value}
}
Salin selepas log masuk

Penggunaan:

Untuk menggunakan struct tidak berubah, import pakej dan cipta tika menggunakan fungsi permulaan. Akses medan menggunakan fungsi pembaca.

myReadOnly := mypackage.NewMyReadOnly(3)
fmt.Println(myReadOnly.Value()) // Prints 3
Salin selepas log masuk

Dalam contoh ini, sebarang percubaan untuk mengubah suai medan nilai bagi contoh myReadOnly akan mengakibatkan ralat penyusunan kerana medan itu tidak dieksport. Fungsi pembaca Nilai menyediakan cara untuk mengakses medan tanpa mengubah suainya. Pendekatan ini berkesan mencipta struct tidak boleh ubah dalam Go.

Atas ialah kandungan terperinci Bolehkah Anda Mencipta Struktur Tidak Berubah dalam Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan