reflectパッケージで構造体情報を取得
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{})
}
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{})
}
現場からは以上です。
Author And Source
この問題について(reflectパッケージで構造体情報を取得), 我々は、より多くの情報をここで見つけました https://qiita.com/xanadou/items/c092eb416c22809bbd70著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .