Go에서 임의 유형의 0 값 확인
Go에서는 변수가 0 값인지 확인하는 것이 많은 경우에 간단할 수 있습니다. . 그러나 직접적으로 비교할 수 없는 유형을 다룰 때는 비교가 어려울 수 있습니다. 특히, 단순한 동등성 검사로는 슬라이스를 평가할 수 없습니다.
제안된 솔루션 중 하나는 다음과 같습니다.
var v ArbitraryType v == reflect.Zero(reflect.TypeOf(v)).Interface()
그러나 이 접근 방식은 유형 동등성에 의존하기 때문에 실패합니다. 이는 작동하지 않습니다. 모든 유형에 적용됩니다.
다행히 Go 1.13에서는 Reflect 패키지에 Value.IsZero() 메서드가 도입되었습니다. 이 방법을 사용하면 유형에 관계없이 값이 0인지 쉽게 확인할 수 있습니다.
if reflect.ValueOf(v).IsZero() { // v is zero, do something }
이 방법은 기본 유형은 물론 채널과 같은 더 복잡한 유형에 대해서도 0 값을 감지할 수 있습니다. , 함수, 배열, 인터페이스, 맵, 포인터, 슬라이스, 안전하지 않은 포인터, 심지어 구조체까지. Value.IsZero()를 활용하면 개발자는 일반적이고 유형에 구애받지 않는 방식으로 0 값을 쉽게 확인할 수 있습니다.
위 내용은 Go에서 모든 유형의 0 값을 어떻게 안정적으로 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!