下面的代码我觉得并没有实质解决问题,也就是包了一层判断,无非就是封装了一下,是否可以考虑不用 err,client 方法直接返回存在的 iclient 或者不存在则返回 nil
type repository struct {
clients map[string]xxx.IClient
}
func (r *repository) client(region, env string) (xxx.IClient, error) {
client, ok := r.clients[region+"-"+env]
if !ok {
return nil, errors.Errorf("client not found, region: %s, env: %s", region, env)
}
return client, nil
}
func (r *repository) GetTasks(region, env string, uuids []string) ([]domain.Task, error) {
client, err := r.client(region, env)
if err != nil {
return nil, err
}
// 其他业务代码
}