Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mencipta Struktur Tidak Berubah dalam Go?

Bagaimana untuk Mencipta Struktur Tidak Berubah dalam Go?

Patricia Arquette
Lepaskan: 2024-12-04 17:33:17
asal
916 orang telah melayarinya

How to Create Immutable Structs in Go?

Mencipta Struktur Kekal dalam Go

Struktur tidak berubah, setelah dimulakan, hanya membenarkan operasi baca pada medannya tanpa kemungkinan pengubahsuaian. Mencapai ini dalam Go memerlukan pendekatan yang sedikit berbeza berbanding dalam beberapa bahasa lain.

Penyelesaian

Untuk mencipta struct tidak berubah dalam Go:

  1. Gunakan Nama Medan Tidak Dieksport: Jadikan medan struct tidak dieksport dengan memulakannya nama dengan huruf kecil. Ini mengehadkan akses kepada medan di luar pakej struct.
  2. Sediakan Fungsi Pembaca: Cipta fungsi pembaca dalam struct untuk membenarkan akses kepada medan yang tidak dieksport. Fungsi ini biasanya mengembalikan salinan nilai medan.

Kod Contoh

package mypackage

type ImmutableStruct struct {
  value int
}

func (s ImmutableStruct) Value() int {
  return s.value
}

func NewImmutableStruct(value int) ImmutableStruct {
  return ImmutableStruct{value: value}
}
Salin selepas log masuk

Penggunaan

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

Dalam contoh ini, ImmutableStruct mempunyai medan yang tidak dieksport dan fungsi pembaca (Nilai()) untuk mengakses medan nilai. Setelah dimulakan, ia tidak boleh diubah suai dari luar pakej mypackage.

Teknik ini memastikan kebolehubahan sambil mengekalkan fleksibiliti struct dan modulariti pakej Go.

Atas ialah kandungan terperinci Bagaimana untuk 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