>백엔드 개발 >Golang >Go에서 모든 유형의 0 값을 어떻게 안정적으로 결정할 수 있습니까?

Go에서 모든 유형의 0 값을 어떻게 안정적으로 결정할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-27 10:21:09353검색

How Can I Reliably Determine the Zero Value of Any Type in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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