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

Bagaimanakah Anda Boleh Mencipta Struktur Tidak Berubah dalam Go?

Barbara Streisand
Lepaskan: 2024-11-16 08:24:03
asal
482 orang telah melayarinya

How Can You Create Immutable Structures in Go?

Menggunakan Struktur Tidak Boleh Ubah dalam Go

Dalam Go, anda mungkin menghadapi keperluan untuk struktur tidak berubah, yang menghalang pengubahsuaian medannya selepas permulaan . Ini boleh meningkatkan integriti dan keselamatan data dalam senario tertentu.

Untuk mencapai kebolehubahan bagi struktur dalam Go, anda boleh menggunakan teknik yang melibatkan menjadikan ahlinya tidak dieksport dan menyediakan fungsi baca sahaja untuk mengakses nilai mereka. Begini cara anda boleh melaksanakan ini:

package mypackage

type myImmutable struct {
  value int
}

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

Dalam contoh ini, struct myImmutable mempunyai nilai medan yang tidak dieksport. Untuk mengakses nilai medan di luar pakej, kami menyediakan fungsi getter Value().

Pemulaan struct boleh dilakukan menggunakan fungsi pembina, yang mencipta contoh baharu dan menetapkan nilai:

func NewMyImmutable(value int) myImmutable {
  return myImmutable{value: value}
}
Salin selepas log masuk

Penggunaan struct tidak berubah anda akan kelihatan seperti ini:

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

Dengan menggunakan getter untuk mengakses medan struct, sebarang percubaan untuk mengubah suainya di luar pakej akan mengakibatkan ralat pengkompil. Pendekatan ini berkesan menjadikan struct tidak boleh ubah.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh 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