Go의 생성자: 합리적인 기본값을 보장하기 위한 대안
전통적으로 생성자는 객체 지향 프로그래밍 언어에서 객체를 초기화하는 데 사용됩니다. 그러나 객체 지향 설계에 대해 다른 접근 방식을 취하는 Go에는 기존 의미의 생성자가 없습니다.
구조체에 합리적인 기본값을 설정해야 하는 필요성을 해결하기 위해 Go는 몇 가지 대안을 제공합니다. 한 가지 옵션은 패키지 수준에서 실행되는 init 메서드입니다. 그러나 이 접근 방식은 개별 구조체를 초기화하는 데 적합하지 않습니다.
보다 일반적인 방법은 필요한 매개변수를 사용하고 초기화된 구조체에 대한 포인터를 반환하는 NewThing 함수를 만드는 것입니다. 이 기능을 사용하면 다른 필드에 기본값을 할당하면서 특정 값을 설정할 수 있습니다. 예:
type Thing struct { Name string Num int } func NewThing(name string) *Thing { p := new(Thing) p.Name = name p.Num = 33 // Default value return p }
이 함수의 요약 버전은 다음과 같습니다.
func NewThing(name string) *Thing { return &Thing{name, 33} }
포인터 반환이 바람직하지 않은 경우, 또 다른 옵션은 값을 직접 반환하는 makeThing 함수를 만드는 것입니다. :
func makeThing(name string) Thing { return Thing{name, 33} }
이 접근 방식은 비교적 간단하고 포인터가 필요하지 않은 구조체에 적합합니다. Go에서 new 키워드가 메모리를 할당한다는 점은 주목할 가치가 있으므로 포인터 작업 시 메모리 관리 방식을 고려하는 것이 중요합니다.
위 내용은 기존 생성자 없이 Go에서 구조체를 어떻게 초기화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!