zoukankan      html  css  js  c++  java
  • golang reflect struct

    import (
        "fmt"
        "reflect"
    )
    
    
    type Foo struct {
        FirstName string `tag_name:"tag 1"`
        LastName  string `tag_name:"tag 2"`
        Age       int    `tag_name:"tag 3"`
    }
    
    func (f *Foo) reflect() {
        val := reflect.ValueOf(f).Elem()
    
        for i := 0; i < val.NumField(); i++ {
            valueField := val.Field(i)
            typeField := val.Type().Field(i)
            tag := typeField.Tag
    
            fmt.Printf("Field Name: %s,	 Field Value: %v,	 Tag Value: %s
    ", typeField.Name, valueField.Interface(), tag.Get("tag_name"))                                                  
        }   
    }
    
    func main() {
        f := &Foo{
            FirstName: "Drew",
            LastName:  "Olson",
            Age:       30, 
        }   
    
        f.reflect()
    
        x := struct{Foo string; Bar int }{"foo", 2}
    
        v := reflect.ValueOf(x)
    
        values := make([]interface{}, v.NumField())
    
        for i := 0; i < v.NumField(); i++ {
            values[i] = v.Field(i).Interface()
        }
    
        fmt.Println(values)
    }
    

      

  • 相关阅读:
    For in
    For each.....in
    正则表达式
    DOM&&BOM
    字幕滚动
    web API种类
    应用程序接口
    for each in
    object constructor
    编程语言历史
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/10343909.html
Copyright © 2011-2022 走看看