reflectパッケージ
GO言語におけるreflectパッケージですが、
発生遅くありません?
思いついてから実装まで一体何フレかかってんだと。
特にしばらく実装から離れていると、さらに時間がかかりますよね。
そこで、そこらへんを少しずつTipsとしてまとめていければと思ってます。
構造体の変数名とタグを取得
package main
import (
"fmt"
"reflect"
)
// 構造体
type Skill struct{
p int64 `tag:"弾拳"`
pp int64 `tag:"烈掌"`
ppk int64 `tag:"烈空脚"`
}
// 構造体情報を出力
func do(I interface{}) {
v := reflect.ValueOf(I)
t := v.Type()
for i := 0; i < t.NumField(); i++ {
name := t.Field(i).Name
tag := t.Field(i).Tag.Get("tag")
fmt.Println("name="+name+" tag="+tag)
}
}
// メイン処理
func main() {
do(Skill{})
}
現場からは以上です。