美文网首页
reflection

reflection

作者: 币来币往 | 来源:发表于2018-07-06 18:05 被阅读0次

    go语言的reflect可以动态的获取变量的数据及其类型信息。
    其中最常用的两个type是 reflect.Value用来存储value, reflect.Type用来存储变量类型
    具体用法可以参考下面的例子

    package main
    
    import (
        "reflect"
        "fmt"
        "os"
    )
    
    type a struct{
        X int
        Y float64
        Z string
    }
    
    func main(){
        A := a{100, 100.11, "struct a"}
        var r reflect.Value
        arguments := os.Args
            r = reflect.ValueOf(&A).Elem()
    
        iType := r.Type()
        fmt.Printf("i Type: %s\n", iType)
        fmt.Printf("The %d fields of %s are:\n", r.NumField(), iType)
        fmt.Printf("The %d fields of %s are:\n", iType.NumField(), iType)
    
        for i := 0; i < r.NumField(); i++{
            fmt.Printf("Field name: %s", iType.Field(i).Name)
            fmt.Printf(" with type: %s", r.Field(i).Type())
            fmt.Printf(" and value: %v\n", r.Field(i).Interface())
        }
    }
    

    相关文章

      网友评论

          本文标题:reflection

          本文链接:https://www.haomeiwen.com/subject/anubuftx.html