>백엔드 개발 >Golang >Go에서 불변 구조체를 만드는 방법은 무엇입니까?

Go에서 불변 구조체를 만드는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-04 17:33:17997검색

How to Create Immutable Structs in Go?

Go에서 불변 구조체 만들기

불변 구조체는 일단 초기화되면 수정 가능성 없이 해당 필드에 대한 읽기 작업만 허용합니다. Go에서 이를 달성하려면 다른 언어와는 약간 다른 접근 방식이 필요합니다.

해결책

Go에서 불변 구조체를 생성하려면:

  1. 내보내지 않은 필드 이름 사용: 구조체의 필드를 내보내지 않은 상태로 만듭니다. 이름을 소문자로 시작합니다. 이는 구조체 패키지 외부의 필드에 대한 액세스를 제한합니다.
  2. 리더 함수 제공: 내보내지 않은 필드에 대한 액세스를 허용하려면 구조체 내에 리더 함수를 생성하세요. 이러한 함수는 일반적으로 필드 값의 복사본을 반환합니다.

예제 코드

package mypackage

type ImmutableStruct struct {
  value int
}

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

func NewImmutableStruct(value int) ImmutableStruct {
  return ImmutableStruct{value: value}
}

사용

myImmutableStruct := mypackage.NewImmutableStruct(3)
fmt.Println(myImmutableStruct.Value()) // Prints 3

이 예에서 ImmutableStruct에는 내보내지 않은 필드와 판독기 함수(Value())를 사용하여 값 필드에 액세스합니다. 일단 초기화되면 mypackage 패키지 외부에서 수정할 수 없습니다.

이 기술은 구조체의 유연성과 Go 패키지의 모듈성을 유지하면서 불변성을 보장합니다.

위 내용은 Go에서 불변 구조체를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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