Golang 一些小例——反射
来源:互联网 发布:ftp 端口 tcp还是udp 编辑:程序博客网 时间:2024/06/06 04:07
package mainimport ( "fmt" "reflect")type A struct { B Name string Age int UseTool bool}type B struct { C Name1 string Age1 int UseTool1 bool}type C struct { Name2 string Age2 int UseTool2 bool}func main() { m := B{C{"aa", 12, true}, "aa", 12, true} u := A{m, "aa", 12, true} getInfo(u) getStructInfo(u)}
func getInfo(obj interface{}) { objCheck := reflect.ValueOf(obj) switch objCheck.Kind() { case reflect.Ptr: fmt.Print("Ptr") //objCheck.Elem() case reflect.Struct: fmt.Print("Struct") case reflect.String: fmt.Print("String") case reflect.Int: fmt.Print("Int") }}func getStructInfo(obj interface{}) { objType := reflect.TypeOf(obj) objValue := reflect.ValueOf(obj) dealAnonymous(objType, objValue) return}
func dealAnonymous(objType reflect.Type, objValue reflect.Value) { for i := 0; i < objType.NumField(); i++ { objRef := objType.Field(i) if objRef.Anonymous { dealAnonymous(objRef.Type, objValue.Field(i)) continue } objVal := objValue.Field(i).Interface() fmt.Printf("\n%-12s: %-6v = %v", objRef.Name, objRef.Type, objVal) } return}
以前学golang的时候写的小例子,具体函数不懂请查阅标准库。
感觉python能做的工作, Golang都可以代替。
性能感觉不错。
0 0
- Golang 一些小例——反射
- golang反射小练习
- 一些Golang小技巧
- Golang反射机制的一些规则
- Golang 反射
- 反射——小练习
- Golang小例 命令行正则
- Golang 中使用 JSON 的一些小技巧
- 关于java反射的一些小栗子
- C#反射小例
- java 反射小例
- golang中的反射
- GoLang反射的规则
- Golang反射调用函数
- GoLang反射的规则
- golang-反射机制
- golang的反射机制
- Golang 反射学习
- linux常用查看硬件设备信息命令
- Java 反射机制
- WPF工程打开控制台并输出 Output to console from a WPF application
- 解决初始界面后EditText自动获取焦点 弹出软键盘
- 安卓蓝牙开发的一些经验和教训
- Golang 一些小例——反射
- Android常用适配器分析(如何制作简易Launcher)
- java equals
- UIDatePicker的用法
- ym——Android之Adapter优化
- 解决SQL server 2000 个人版 XP能用 不能在win7 64位系统上安装的问题
- shell变量详解
- 高效使用Bitmaps(一) 大Bitmap的加载
- lua模仿java里面的模板引擎