2017-10-10 4 views
2

이동 Newb 여기에 - 나는GoLang : 괄호 안에 싸인 속성의 의미 의미?

if tc, ok := tng.(ThingClasser); ok { 
    //... do some stuff ... 
} 

내가 tng.(ThingClasser)의 의미를 이해하지 못할 작성하지 않은 이동 코드의 다음 비트가 발생했습니다.

어떤 식 으로든 이것은 메소드 호출처럼 보입니다. 즉, 두 개의 변수 (ec, ok)가 여러 개의 반환 값을 받아 들일 준비가되어 있습니다.

그러나 tng.(ThingClasser)은 메소드 호출이 아닌 속성 액세스처럼 보입니다.

그러나 약 ThingClasser 주위의 괄호는 전에 보지 못한 주름입니다. 또한 중요하다면 ThingClasser 기호가이 프로젝트의 다른 곳에서 인터페이스로 정의되어 있으므로 주위에 구문적인 설탕이라고 생각할 수 있습니다.이 인터페이스는 인터페이스를 구현하지만 두 반환 값은 혼란스러워합니다.

인터넷 검색은 아직 구체적으로 나타나지 않았습니다. 그러나 이것은 Google에서 어려운 일 중 하나입니다.

이 전화/구문이 GoLang에 무엇인지 아는 사람이 있습니까? 가능하면 RTFM을 할 수 있도록 해당 매뉴얼 페이지에서 저를 가리켜 주시겠습니까?

+2

[Go language spec] (https://golang.org/ref/spec)은 비교적 간단합니다. 그것은 이러한 것들을 확인하는 가장 좋은 장소입니다. '. '("타입 어설 션"사양을 빠르게 찾습니다.) – JimB

답변

3

이것은 형식 어설 션입니다. 반환 값은, 1) 지정된 형태로 변환 된 객체. 2) 변환이 성공했는지를 나타내는 boolean ThingClasser은 (는) 변환 대상 유형입니다. 문서는 여기에서 찾을 수 있습니다 : https://golang.org/ref/spec#Type_assertions

+2

Go 스펙은 읽을 거리가 있습니다. 대부분의 현대 언어와 달리 짧고 - 정말 짧습니다. C# 사양의 1/5, Java 사양의 1/10 크기 Go의 단순성 덕분에 몇 시간 만에 원시 언어 사양 전체를 읽고 많은 것을 얻을 수 있습니다. – Adrian