Go 구조체의 기본값
Go에서 구조체(구조체)에는 해당 필드에 대한 기본값이 있습니다. 예를 들어 정수(int)의 기본값은 0입니다. 이는 많은 시나리오에서 유용하지만 0이 유효한 값인 시나리오에서는 문제가 될 수 있습니다. 이로 인해 구조체의 필드가 명시적으로 설정되었는지 여부를 알기가 어렵습니다.
기본값과 설정값 구별
안타깝게도 Go는 필드가 기본값으로 설정 또는 초기화되었는지 직접 확인하는 방법입니다. 그러나 다음 두 가지 접근 방식을 사용할 수 있습니다.
포인터 사용
설정되지 않은 필드에 포인터를 사용할 수 있습니다. 포인터에는 필드가 설정되었는지 확인하는 데 사용할 수 있는 nil 0 값이 있습니다.
type Test struct { TestIntOne *int TestIntTwo *int }
이 경우 TestIntOne 및 TestIntTwo는 정수에 대한 포인터입니다. TestIntOne이 nil이면 설정되지 않았음을 의미하고, nil이 아니면 0이 아닌 값으로 설정되었음을 의미합니다.
메서드 사용
또는 필드를 설정하고 필드가 설정되었는지 추적하는 메서드를 만들 수도 있습니다. not:
type Test struct { TestIntOne int TestIntTwo int isSetOne, isSetTwo bool } func (t *Test) SetIntOne(i int) { t.TestIntOne = i t.isSetOne = true }
이 방법을 사용하면 TestIntOne의 설정을 제어할 수 있으며 isSetOne 속성은 설정 여부를 나타냅니다.
결론
Go 구조체에는 필드에 대한 기본값이 있지만 필드가 수동으로 설정되었는지 아니면 필드가 설정되었는지 직접 확인할 수 있는 방법은 없습니다. 기본값으로 초기화되었습니다. 그러나 포인터나 메서드를 사용하면 이 제한 사항을 해결하고 구조체 필드의 상태를 유지할 수 있습니다.
위 내용은 Go Struct 필드가 명시적으로 설정되었는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!