>백엔드 개발 >Golang >Go에서 불변 구조를 어떻게 만들 수 있나요?

Go에서 불변 구조를 어떻게 만들 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-16 08:24:03489검색

How Can You Create Immutable Structures in Go?

Go에서 불변 구조 사용

Go에서는 초기화 후 필드 수정을 방지하는 불변 구조가 필요할 수 있습니다. . 이는 특정 시나리오에서 데이터 무결성과 보안을 강화할 수 있습니다.

Go에서 구조체의 불변성을 달성하려면 해당 멤버를 내보내지 않도록 만들고 해당 값에 액세스하기 위한 읽기 전용 기능을 제공하는 기술을 사용할 수 있습니다. 이를 구현하는 방법은 다음과 같습니다.

package mypackage

type myImmutable struct {
  value int
}

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

이 예에서 myImmutable 구조체에는 내보내지 않은 필드 값이 있습니다. 패키지 외부의 필드 값에 액세스하기 위해 getter 함수 Value()를 제공합니다.

구조체 초기화는 새 인스턴스를 생성하고 값을 설정하는 생성자 함수를 사용하여 수행할 수 있습니다.

func NewMyImmutable(value int) myImmutable {
  return myImmutable{value: value}
}

불변 구조체의 사용법은 다음과 같습니다:

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

구조체 필드에 액세스하기 위해 getter를 사용하면 패키지 외부에서 해당 필드를 수정하려고 하면 컴파일러 오류가 발생합니다. 이 접근 방식은 효과적으로 구조체를 변경할 수 없게 만듭니다.

위 내용은 Go에서 불변 구조를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.