reflect.Kind 검색 중 기본 유형을 기반으로 한 유형
Go에서는 Reflect를 결정합니다. 유형의 종류는 까다로울 수 있습니다. 유형이 기본 유형을 기반으로 인터페이스를 구현하는 경우. 예를 들어, 다음 시나리오를 고려하십시오.
type ID interface { myid() } type id string func (id) myid() {} func main() { id := ID(id("test")) fmt.Println(id) fmt.Println(reflect.TypeOf(id)) // How to get the kind to return "reflect.Interface" from the var "id"? fmt.Println(reflect.TypeOf(id).Kind()) }
이 예에서 ID 인터페이스는 기본 문자열 유형을 기반으로 하는 id 유형으로 구현됩니다. Reflect.TypeOf(id).Kind()가 Reflect.Interface를 반환하기를 원하지만 대신 Reflect.String을 반환합니다.
인터페이스에 대한 포인터를 사용하는 솔루션
To 이 문제를 해결하려면 Reflect.TypeOf()에는 인터페이스{}가 필요하다는 점을 기억해야 합니다. 인터페이스가 아닌 값으로 작업할 때 Go는 해당 값을 암시적으로 인터페이스에 자동으로 래핑합니다.{} 이를 방지하기 위해 인터페이스에 대한 포인터를 사용할 수 있습니다.
t := reflect.TypeOf(&id).Elem() fmt.Println(t.Kind())
reflect.TypeOf(&id).Elem()을 사용하여 ID 인터페이스의 유형 설명자를 검색합니다. 관심이 있습니다. Elem() 메소드는 인터페이스 유형인 포인터 유형의 요소 유형을 제공합니다.
이제 업데이트된 코드를 실행하면 출력:
test main.ID interface
기본 유형을 기반으로 인터페이스를 구현하는 유형에 대한 Reflect.Kind를 올바르게 얻는 방법을 보여줍니다.
위 내용은 Go에서 기본 유형을 기반으로 인터페이스를 구현하는 유형에 대해 `reflect.Kind.Interface`를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!