C語言中文網 目錄
首頁 > Go語言教程 > Go語言反射 閱讀:1,244

Go語言通過類型信息創建實例

當已知 reflect.Type 時,可以動態地創建這個類型的實例,實例的類型為指針。例如 reflect.Type 的類型為 int 時,創建 int 的指針,即*int,代碼如下:
package main

import (
    "fmt"
    "reflect"
)

func main() {

    var a int

    // 取變量a的反射類型對象
    typeOfA := reflect.TypeOf(a)

    // 根據反射類型對象創建類型實例
    aIns := reflect.New(typeOfA)

    // 輸出Value的類型和種類
    fmt.Println(aIns.Type(), aIns.Kind())
}
代碼輸出如下:
*int ptr

代碼說明如下:
  • 第 13 行,獲取變量 a 的反射類型對象。
  • 第 16 行,使用 reflect.New() 函數傳入變量 a 的反射類型對象,創建這個類型的實例值,值以 reflect.Value 類型返回。這步操作等效于:new(int),因此返回的是 *int 類型的實例。
  • 第 19 行,打印 aIns 的類型為 *int,種類為指針。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo