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

Bagaimanakah Anda Boleh Mencipta Struktur Tidak Berubah dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-11-16 08:24:03416semak imbas

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
}

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

Penggunaan struct tidak berubah anda akan kelihatan seperti ini:

myImmutable := mypackage.NewMyImmutable(3)
fmt.Println(myImmutable.Value())  // Prints 3

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!

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