1 回答

TA贡献1803条经验 获得超6个赞
并非所有 lint 问题都必须修复
如果您认为它会牺牲可读性,请添加 // nolint
但是……您可以使用泛型重构它们的代码
func [T, V any] someNameToBeDefined(
ctx context.Context,
target T,
validator func(T) error,
executor func(context.Context, T) (V, error),
) (V, error){
if err := validator(target); err!= nil { … }
return executor(ctx, target)
}
func (svc *UserService) CreateUser(
ctx context.Context,
req *pb.CreateUserRequest,
) (*pb.CreateUserResponse, error) {
return someNameToBeDefined(ctx,
req,
svc.validateCreateUser,
svc.repo.CreateUser,
)
}
如果您认为这是可读的,请继续。
但也许这可能不是正确的方法。
例如,您的存储库可以在创建/更新之前验证请求。
这是一种比使用泛型和函数指针恕我直言更具可读性的方法
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报