golang博客里有一个例子。下面两段程序的结果是相同的。
package main
import (
"fmt"
"reflect"
)
type A struct {
Name string
}
func (p A) test(){}
func (p A) Test1(){
fmt.Println("df")
}
type AInterface interface {
Test1()
test()
}
func main() {
var a A
a.Name = "hha"
var value reflect.Value = reflect.ValueOf(a)
p := value.Interface().(AInterface)
p.Test1()
}
package main
import (
"fmt"
"reflect"
)
type A struct {
Name string
}
func (p A) test(){}
func (p A) Test1(){
fmt.Println("df")
}
func main() {
var a A
a.Name = "hha"
var value reflect.Value = reflect.ValueOf(a)
vf := value.MethodByName("Test1")
in := make([]reflect.Value, 0)
vf.Call(in)
}
遗憾的是第一种方法事先定义好了interface,如果你加入的新方法应该是不能成功的。
上一篇: 一个java class文件反编译工具jd jui
下一篇: 蒙提霍尔问题
相关文章:
- python程序内存占用分析-meliae
- 介绍几个比较出名的编程acm题库
- 位运算交换变量 不用临时变量(C位运算)
- Javascript 另类写法
- 用python爬虫抓站的一些技巧总结
- Python 模拟登录及表单提交
Categories: 博客记录
0 Responses so far.