1 回答
TA貢獻1803條經(jīng)驗 獲得超6個贊
并非所有 lint 問題都必須修復(fù)
如果您認為它會犧牲可讀性,請?zhí)砑?// nolint
但是……您可以使用泛型重構(gòu)它們的代碼
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,
)
}
如果您認為這是可讀的,請繼續(xù)。
但也許這可能不是正確的方法。
例如,您的存儲庫可以在創(chuàng)建/更新之前驗證請求。
這是一種比使用泛型和函數(shù)指針恕我直言更具可讀性的方法
- 1 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報
