ホーム プログラミング言語 golang go reflect Go 言語は型情報を通じてインスタンスを作成します

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)

  // 値の型と種類を出力する
  fmt.Println(aIns.Type(), aIns.Kind())
} 

コード出力は次のとおりです。

*int ptr

コードの説明は次のとおりです。

  • 13行目、変数aのリフレクション型オブジェクトを取得します。
  • 16行目では、reflect.New()関数を使用して変数aのリフレクション型オブジェクトを渡し、この型のインスタンス値を作成し、その値をreflect.Value型として返します。この操作は new(int) と同等なので、*int 型のインスタンスを返します。
  • 19 行目では、print aIns の型は *int で、型はポインターです。
 

「 Go 言語は型情報を通じてインスタンスを作成します」についてわかりやすく解説!絶対に観るべきベスト2動画

【たった1時間で学べる】Go言語のプログラミング初心者向けの超入門講座【文字書き起こし、ソースコードも完全無料!】
【初心者必見!】Go言語とは?できることや学ぶメリット・将来性について解説