go語言怎麼取得類型訊息

青灯夜游
發布: 2023-02-22 19:14:13
原創
4572 人瀏覽過

在go語言中,可以透過反射來取得類型資訊;只需要呼叫reflect套件的TypeOf()函數。方法:1、使用「reflect.TypeOf()」函數取得指定變數的類型物件;2、使用Name()和Kind()取得類型物件的類型信息,語法「類型物件.Name()」和「類型對象.Kind()」。

go語言怎麼取得類型訊息

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

在go語言中,可以透過反射來取得類型資訊。

在 Go語言中透過呼叫 reflect.TypeOf 函數,我們可以從一個任何非介面類型的值建立一個 reflect.Type 值。 reflect.Type 值表示此非介面值的類型。透過此值,我們可以得到很多此非介面類型的信息。當然,我們也可以將一個介面值傳遞給一個 reflect.TypeOf 函數調用,但是此調用將傳回一個表示著此介面值的動態類型的 reflect.Type 值。

實際上,reflect.TypeOf 函數的唯一參數的類型為 interface{},reflect.TypeOf 函數將總是傳回一個表示著此唯一介面參數值的動態類型的 reflect.Type 值。

那如何得到一個表示著某個介面類型的 reflect.Type 值呢?我們必須透過下面將要介紹的一些間接途徑來達到這個目的。

類型 reflect.Type 為一個介面類型,它指定了若干方法。透過這些方法,我們能夠觀察到一個 reflect.Type 值所表示的 Go類型的各種資訊。這些方法中的有的適用於所有種類的類型,有的只適用於一種或幾種類型。透過不合適的 reflect.Type 屬主值呼叫某個方法將在執行時產生一個恐慌。

使用 reflect.TypeOf() 函數可以獲得任意值的類型物件(reflect.Type),程式透過類型物件可以存取任意值的類型資訊。以下透過範例來理解取得類型物件的過程:

package main import ( "fmt" "reflect" ) func main() { var a int typeOfA := reflect.TypeOf(a) fmt.Println(typeOfA.Name(), typeOfA.Kind()) }
登入後複製

程式碼輸出如下:

go語言怎麼取得類型訊息

程式碼說明如下:

  • #第10 行,定義一個int 類型的變數。

  • 第 12 行,透過 reflect.TypeOf() 取得變數 a 的類型物件 typeOfA,類型為 reflect.Type()。

  • 第 14 行中,透過 typeOfA 類型物件的成員函數,可以分別取得到 typeOfA 變數的型別名稱為 int,種類(Kind)為 int。

擴展知識:反射的類型(Type)與種類(Kind)

在使用反射時,需要先理解類型(Type)和種類(Kind)的區別。在程式設計中,使用最多的是類型,但在反射中,當需要區分一個大品種的類型時,就會用到種類(Kind)。例如,需要統一判斷類型中的指標時,使用種類(Kind)資訊就較為方便。

以上是go語言怎麼取得類型訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!