轻松获取golang结构体私有变量
举个例子
如果想要获取http.DefaultServeMux
里面m
怎么办呢?
- 可以通过reflect
- 内存对齐
type ServeMux struct {
Mu sync.RWMutex
M map[string]muxEntry
Es []muxEntry
Hosts bool
}
type muxEntry struct {
H http.Handler
Pattern string
}
func GetDefaultServeMux() *ServeMux {
return (*ServeMux)(unsafe.Pointer(http.DefaultServeMux))
}
把http.ServeMux
结构体映射出来,并把私有属性转化为公开属性,那么就能轻松访问了
作者:百里求一
出处:http://www.cnblogs.com/bergus/
我的语雀: https://www.yuque.com/barry.bai
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。