Go 中可以在沒有實例的情況下取得型別描述符。利用 Reflect.TypeOf() 函數,您可以存取指向 nil 值的指標的類型表示。
<code class="go">t := reflect.TypeOf((*int)(nil)).Elem() fmt.Println(t) // Output: int t = reflect.TypeOf((*http.Request)(nil)).Elem() fmt.Println(t) // Output: http.Request t = reflect.TypeOf((*os.File)(nil)).Elem() fmt.Println(t) // Output: os.File</code>
對於為了方便起見,您可以定義全域常數來表示不同的類型,因此無需建立Reflect.Type 變數:
<code class="go">type TypeDesc int const ( TypeInt TypeDesc = iota TypeHTTPRequest TypeOSFile )</code>
然後您可以在switch 語句中使用這些常數來決定值的類型:
<code class="go">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") } }</code>
使用常數進行類型表示有幾個優點:
以上是Go中如何在沒有實例的情況下確定值的類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!