인스턴스가 없는 TypeOf: 함수에 결과 전달
Go에서는 인스턴스 없이 "Type"을 얻을 수 있습니다. 그런 종류의. 이는 Reflect.TypeOf()를 사용하여 달성할 수 있지만 일반적으로 예제에는 인스턴스가 포함됩니다.
인스턴스 없이 유형 가져오기
인스턴스 없이 "유형"을 획득하려면 인스턴스의 경우, "유형화된" nil을 할당할 수 있는 유형에 대한 포인터로 시작하는 것이 요령입니다. 이어서 .Elem()을 사용하여 기본 유형으로 알려진 지적 유형의 Reflect.Type 설명자를 얻을 수 있습니다.
<code class="go">t := reflect.TypeOf((*int)(nil)).Elem() fmt.Println(t) t = reflect.TypeOf((*http.Request)(nil)).Elem() fmt.Println(t) t = reflect.TypeOf((*os.File)(nil)).Elem() fmt.Println(t)</code>
출력 예:
int http.Request os.File
유형 전달
유형을 전달하고 스위치에서 활용해야 하는 경우 참조용으로 전역 변수에 생성하고 저장하세요.
<code class="go">var ( intType = reflect.TypeOf((*int)(nil)) httpRequestType = reflect.TypeOf((*http.Request)(nil)) osFileType = reflect.TypeOf((*os.File)(nil)) int64Type = reflect.TypeOf((*uint64)(nil)) ) func printType(t reflect.Type) { switch t { case intType: fmt.Println("Type: int") case httpRequestType: fmt.Println("Type: http.request") case osFileType: fmt.Println("Type: os.file") case int64Type: fmt.Println("Type: uint64") default: fmt.Println("Type: Other") } } func main() { printType(intType) printType(httpRequestType) printType(osFileType) printType(int64Type) }</code>
간단한 접근 방식
비교 목적으로만 유형을 활용하는 경우 Reflect 대신 상수 사용을 고려하세요.Type:
<code class="go">type TypeDesc int const ( typeInt TypeDesc = iota typeHttpRequest typeOsFile typeInt64 ) func printType(t TypeDesc) { switch t { case typeInt: fmt.Println("Type: int") case typeHttpRequest: fmt.Println("Type: http.request") case typeOsFile: fmt.Println("Type: os.file") case typeInt64: fmt.Println("Type: uint64") default: fmt.Println("Type: Other") } } func main() { printType(typeInt) printType(typeHttpRequest) printType(typeOsFile) printType(typeInt64) }</code>
위 내용은 Go에서 인스턴스 없이 유형을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!