myInterface, myConcrete)var i myInterface = c 이면 c의 복사본을 저장myInterface에 해당하는 메서드만 포함하며 다른 myConcrete의 메서드는 포함하지 않음i.tab->type으로 실제 타입 포인터 획득tab은 i-table 을 나타내는 멤버
i.tab->fun[0](i.data)i.data는 32비트(워드) 포인터를 인자로 전달 받는 것(*myConcrete).someFn(인터페이스 타입, 구체 타입) 쌍의 itable을 계산하는 것은 비효율적type description structure를 생성interface runtime은 두 테이블을 보고(i -> c) itable을 계산하여 캐싱O(ni * nc)O(ni + nc)(myConcrete).someFn간접호출
indirect call: 함수의 주소를 직접 명시하지 않고, 포인터나 테이블을 통해 함수의 주소를 찾아 호출
Go Data Structures: Interfaces