go闭包

错误示例:

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} })

通过函数参数传递的变量,是值拷贝,在函数中只会是最初传进来的值,地址于最初的变量不同,而闭包则是直接引用外部变量,不经过传参,变量地址不变,所以变量会实时变化。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注