>백엔드 개발 >Golang >Go의 유형 주장 `.(data_type)`은 어떻게 인터페이스 값에서 특정 유형을 추출합니까?

Go의 유형 주장 `.(data_type)`은 어떻게 인터페이스 값에서 특정 유형을 추출합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-24 01:36:10707검색

How Does Go's Type Assertion `.(data_type)` Extract Specific Types from Interface Values?

Go에서 유형 어설션: .(data_type) 메서드**

Go에서 .(data_type )는 유형 어설션으로 알려져 있으며 인터페이스 값에서 특정 유형을 검색할 수 있습니다. "Effective Go"에 설명된 대로 "지정된 명시적 유형의 값을 추출"하는 작업이 포함됩니다.

제공된 코드에서 Reflect.TypeOf(b)는 b가 할당되었기 때문에 "인터페이스{}"를 반환합니다. 문자열 유형의 인터페이스 값 "silly". 그러나 유형 어설션에서 b에 문자열 값이 포함되어 있다고 명시적으로 명시하고 있으므로 Reflect.TypeOf(b.(string))은 "string"을 반환합니다.

유형 어설션은 인터페이스에서 특정 유형을 추출하기 위해 런타임에 사용됩니다. 값의 새 복사본을 생성하지 않고 기본 값의 유형에 액세스한다는 점에서 유형 변환과 다릅니다.

b.(string)의 경우 어설션은 문자열 값을 반환합니다. 이를 통해 길이를 자르거나 확인하는 등 문자열과 관련된 작업이 가능합니다. 또한, 유형이 지정되지 않은 부울 값을 할당하여 유형 어설션의 성공 여부를 테스트할 수 있습니다.

더 명확히 하자면, 유형 어설션은 Go에게 "b가 문자열이라고 알려주지" 않습니다. 대신 런타임에 b에서 문자열 값을 추출하려고 시도하여 b에 다른 유형이 포함되어 있으면 패닉이 발생합니다(선택적 부울 값이 할당되지 않은 경우). 어설션의 결과 값은 지정된 데이터 유형을 가지며 특정 작업 및 속성에 대한 액세스 권한을 부여합니다.

위 내용은 Go의 유형 주장 `.(data_type)`은 어떻게 인터페이스 값에서 특정 유형을 추출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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