错误示例:
func createRequestCheckParams(params []string) func() []string {
return func() []string {
return params
}
}
routerHandler(c, manager.UserRegister, request, UserRegisterCheck, createRequestCheckParams([]string{request.RoleCode}))
正确示例:
routerHandler(c, manager.UserRegister, request, UserRegisterCheck, func() []string { return []string{request.RoleCode} })
通过函数参数传递的变量,是值拷贝,在函数中只会是最初传进来的值,地址于最初的变量不同,而闭包则是直接引用外部变量,不经过传参,变量地址不变,所以变量会实时变化。
发表回复