k01ken’s b10g

He110 W0r1d!

Goのreflectを使う

開発環境は、Windows 10 Pro(64bit) + go version go1.15.3 windows/amd64

package main

import (
  "fmt"
  "reflect"
)

func main() {
  // 値のタイプを知る
  fmt.Println(reflect.TypeOf("Koiken")) // string
  // 型の種別を比較する
  fmt.Println(reflect.TypeOf("Koiken").Kind() == reflect.String) // true

  // 値のセット
  var s string
  // 中身を変更するのでポインタを渡す
  v := reflect.ValueOf(&s).Elem()
  fmt.Println(v.CanSet()) // true
  v.SetString("Hello reflect")
  fmt.Println(s) // Hello reflect
}

■参考リンク
reflect
The Laws of Reflection
Go 言語 reflect チートシート