유형 어설션 방법 공개: .(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!