2013-01-05 3 views

답변

3

불행히도, 그렇지 않습니다. 추한 것처럼 보일 수도 있지만 실제로는 reflect.Type을 얻기 위해 필요한 최소한의 정보 만 표현하고 있습니다. 이들은 일반적으로 프로그램 시작시 계산되고 함수가 값을 필요로 할 때마다 TypeOf 룩업 패널티가 발생하지 않도록 모든 필요한 유형을 가진 var() 블록의 파일 맨 위에 포함됩니다.

이 관용구는 예를 들어, 표준 라이브러리 전반에 걸쳐 사용됩니다

이 자세한 건설에 대한 이유는 reflect.TypeOf이 라이브러리의 일부가 아니라 내장에서, 그리고 따라서해야한다는 사실에서 유래

html/template/content.go: errorType = reflect.TypeOf((*error)(nil)).Elem() 
실제로 가치를 취하십시오.

일부 언어에서 유형 이름은 표현식으로 사용할 수있는 식별자입니다. Go에서는 그렇지 않습니다. 유효한 표현식은 in the spec입니다. 형식의 이름을 reflect.Type으로 사용할 수도있는 경우 reflect.Type에 메서드가 있으므로 메서드 표현에 모호한 부분이 생깁니다 (실제로는 인터페이스입니다). 또한 언어 스펙을 표준 라이브러리와 결합하여 유연성을 감소시킵니다.

관련 문제