reflect.DeepEqual

reflect.DeepEqual是reflect包中的一个重要函数,它用于判断两个值是否深度相等,经常用于单元测试中。
2024-11-28T001126
reflect.DeepEqual的局限性
未导出字段:对于结构体的未导出字段,reflect.DeepEqual无法访问,因此无法比较。
函数比较:如果结构体或容器中包含函数,reflect.DeepEqual不会比较函数逻辑是否相同,只会比较函数指针是否相等。

接口型函数

接口型函数就是该函数类型实现了这个接口。(参考net/http的HandlerFunc)
函数类型实现了接口,那函数参数是接口的时候,既能够将普通的函数类型(需类型转换)作为参数,也可以将结构体作为参数,使
用更为灵活,可读性也更好,这就是接口型函数的价值。

1
2
3
4
5
6
7
8
9
10
11
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}

func Handle(pattern string, handler Handler) {
DefaultServeMux.Handle(pattern, handler)
}

func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
DefaultServeMux.HandleFunc(pattern, handler)
}