> 백엔드 개발 > Golang > Go의 `.(data_type)` 유형 어설션 방법은 무엇을 하며 왜 중요한가요?

Go의 `.(data_type)` 유형 어설션 방법은 무엇을 하며 왜 중요한가요?

DDD
풀어 주다: 2025-01-06 02:48:43
원래의
372명이 탐색했습니다.

What Does Go's `.(data_type)` Type Assertion Method Do and Why Is It Important?

유형 어설션 방법 공개: .(data_type)

Go 세계에서 수수께끼의 .(data_type) 방법은 많은 사람들을 당황하게 했습니다. , 질문을 촉발합니다: 그것은 무엇을 하고 그 의미는 무엇입니까? 이를 이해하기 위한 여정을 시작해 보겠습니다.

제공하신 코드 조각에 표시된 대로:

b := "silly"
reflect.TypeOf(b.(string)) // string
reflect.TypeOf(b)          // string
로그인 후 복사

.(data_type) 메서드(이 경우 b.(string))는 다음을 허용합니다. 인터페이스 값(b)을 특정 데이터 유형(이 예에서는 문자열)으로 변환합니다. 이는 값이 실제로 이 인스턴스의 문자열과 같은 지정된 유형임을 컴파일러에 보증합니다.

그러나 b.(string)은 b의 기본 값을 변경하지 않는다는 점을 기억하는 것이 중요합니다. . 대신 지정된 유형의 새 값을 추출합니다. 유형 어설션의 성공 여부를 확인하려면 추가 부울 변수를 포함할 수 있습니다.

s, ok := b.(string) // s is of type string
if !ok {
    // b did not contain a value of type string!
}
로그인 후 복사

이 접근 방식은 변환된 값뿐만 아니라 여부를 나타내는 부울 결과(ok)도 제공합니다. 변환이 성공했는지 여부.

더 명확히 하기 위해 유형 어설션은 "b가 문자열임을 컴파일러에 알리지" 않습니다. 오히려 b에서 문자열 값을 동적으로 추출하여 b에 다른 유형이 포함되어 있으면 오류를 발생시킵니다. 그러면 추출된 값을 문자열로 처리할 수 있어 인터페이스 값에 직접 수행할 수 없는 슬라이싱 등의 작업을 수행할 수 있습니다.

위 내용은 Go의 `.(data_type)` 유형 어설션 방법은 무엇을 하며 왜 중요한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿