"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go: (값, 유형) 쌍 또는 메소드 테이블에서 인터페이스는 어떻게 표현됩니까?

Go: (값, 유형) 쌍 또는 메소드 테이블에서 인터페이스는 어떻게 표현됩니까?

2024-11-08에 게시됨
검색:811

How are Interfaces Represented in Go: (Value, Type) Pair or Method Table?

Go의 인터페이스 표현 이해

Go에서 인터페이스로 작업할 때는 기본 표현을 이해하는 것이 중요합니다. 두 가지 주요 리소스가 이 주제를 조명하지만 관점이 다릅니다.

"반사의 법칙" 기사(http://blog.golang.org/laws-of-reflection)에서는 인터페이스 개념을 소개합니다. r io.Reader의 예에서 볼 수 있듯이 (값, 유형) 쌍을 포함합니다. 이 쌍에는 tty 값과 *os.File 유형이 포함됩니다.

또는 다른 문서에서는 인터페이스에는 인터페이스 사양을 충족하기 위한 메서드만 포함되어 있음을 강조합니다. Stringer 보유 유형 Binary의 예에서 itable(인터페이스 메소드 테이블)은 Binary 유형에 정의된 다른 메소드를 제외하고 String 구현에 필요한 메소드만 나열합니다.

이러한 관점을 조정하려면 Go의 인터페이스를 고려하십시오. 런타임 시 "래퍼 개체"로 사용됩니다. 이는 래핑된 객체에서 메서드를 실행할 때 런타임을 안내하는 또 다른 객체인 itable에 대한 정보를 제공합니다. 예를 들어, r에서 Read를 호출할 때 런타임은 itable을 사용하여 os.File 유형 레이아웃 내의 해당 함수로 이동합니다.

Reflection은 "반사의 법칙" 기사에 설명된 대로 편리한 기능을 제공합니다. Reflect.ValueOf 및 Reflect.TypeOf 메소드를 통해 (값, 유형) 쌍을 노출하여 이 표현을 탐색하는 방법입니다.

릴리스 선언문 이 글은 1729758157에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3