1 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
并非所有 lint 問題都必須修復(fù)
如果您認(rèn)為它會(huì)犧牲可讀性,請(qǐng)?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,
)
}
如果您認(rèn)為這是可讀的,請(qǐng)繼續(xù)。
但也許這可能不是正確的方法。
例如,您的存儲(chǔ)庫(kù)可以在創(chuàng)建/更新之前驗(yàn)證請(qǐng)求。
這是一種比使用泛型和函數(shù)指針?biāo)∥抑毖愿呖勺x性的方法
- 1 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報(bào)