美文网首页
golang reflect库简单的例子

golang reflect库简单的例子

作者: golang推广大使 | 来源:发表于2019-06-08 14:04 被阅读0次

reflect库不常用,所有每次用的时候都要翻看文档,为了方便自己,特定写个例子

package main

import (
    "log"
    "reflect"
)

type Info struct {
    Id int
}

func Log(format string, args ...interface{}) {
    log.Printf(format+"\n", args...)
}
func main() {
    log.SetFlags(log.Ldate | log.Lshortfile) //
    var i Info
    t := reflect.TypeOf(i)
    Log("name:%s", t.Name())
    Log("string:%+v", t.String())
    Log("kind:%+v", t.Kind())
    Log("pkgPath:%+v", t.PkgPath())
    v := reflect.ValueOf(i)
    Log("value:%+v", v.FieldByName("Id").Int())
    Log("value:%+v", v.FieldByName("Id").Interface())
    Log("split%s", "====")
    s := &i
    t = reflect.TypeOf(s)
    Log("kind of t:%+v", t.Kind())
    switch t.Kind() {
    case reflect.Ptr:
        Log("pt:%+v", "")
    case reflect.Struct:
        Log("struct:%+v", "")
    }

t = reflect.Indirect(reflect.ValueOf(s)).Type()
    Log("name:%s", t.Name())
    Log("string:%+v", t.String())
    Log("kind:%+v", t.Kind())
    Log("pkgPath:%+v", t.PkgPath())

}


上面的代码执行结果如下:

2019/06/08 main.go:13: name:Info
2019/06/08 main.go:13: string:main.Info
2019/06/08 main.go:13: kind:struct
2019/06/08 main.go:13: pkgPath:main
2019/06/08 main.go:13: value:0
2019/06/08 main.go:13: value:0
2019/06/08 main.go:13: split====
2019/06/08 main.go:13: kind of t:ptr
2019/06/08 main.go:13: pt:
2019/06/08 main.go:13: name:Info
2019/06/08 main.go:13: string:main.Info
2019/06/08 main.go:13: kind:struct
2019/06/08 main.go:13: pkgPath:main

相关文章

  • golang reflect库简单的例子

    reflect库不常用,所有每次用的时候都要翻看文档,为了方便自己,特定写个例子 上面的代码执行结果如下:

  • Golang 反射实现依赖注入

    Golang 反射实现依赖注入 Coding/Golang #Golang #Golang/reflect 依赖注...

  • Golang标准库——reflect

    reflect reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interfac...

  • golang使用oracle oci接口查询oracle数据库

    一个例子使用golang的github.com/mattn/go-oci8库查询oracle数据库的例子。这里例子...

  • golang如何修改struct的未导出的域

    golang如何修改struct的未导出的域 这里例子说明如何使用reflect包来访问修改未导出的域。假设定义了...

  • n2n

    reflect: https://blog.golang.org/laws-of-reflectionregexp...

  • golang的reflect

    编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机...

  • golang标准库reflect的魔法运用

    本文要解决什么问题? 有时候我们为了简化代码,需要包装使用一些参数数量可变的函数,例如数据库查询用的Query、E...

  • go日志框架之logrus

    本文转载自姜总 golang日志库 golang标准库的日志框架非常简单,仅仅提供了print,panic和fat...

  • TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 11 例子2: 输出: 13 例子1是使用值...

网友评论

      本文标题:golang reflect库简单的例子

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