Boa, vídeo muito explicativo. Até agora eu não usei o context por que eu não sabia e não encontrava um conteúdo prático o explicando, mas agora que eu finalmente entendi, com certeza usarei ele nos meus projetos. Vlw pelo conteúdo, teu canal tá ajudando de mais.
Boa oportunidade de usar ele, é nas chamadas de sua API Rest, com timeout e criar uma segunda chamada, ou se vc tiver duas API externas e se uma responder primeiro que a outra, você pode cancelar a outra goroutine.
Boa demais!!!! Os contexts são quase uma peça chave do Go, quase que essencial em muitos fluxos pq meio q voce consegue colocar timeout/deadline em qualquer coisa, seja chamada, query, qualquer coisa mesmo (fora utilizar ele pra comunicar valores entre goroutines). Pelo menos agora quando voce ver, ja sabe do q se trata kkkkkk
Valeu Antonio!!! Ficou bem extenso o video mas achei uma boa explicar tudo em detalhes em um video so, acho q ficou mais facil, fico feliz q tenha ajudado!
Existe uma forma mais simples de lidar com isso? por exemplo, tenho um context com timeout de 5s, mas, tenho meu método que faz minhas chamadas com esse context, fazer com que ele cancele o context sem necessariamente ter um for que fique ouvindo o channel? ctx, cancel := context.WithTimeout(r.Context(), 3*time.Second) defer cancel() func ChamadaParaBanco() {} .... por exemplo
Então, nesse caso você está usando o contexto pro método, ao fazer requisições HTTP, gRPC ou pra banco de dados, todos eles aceitam context por parâmetro e fazem isso pra você, com isso você só precisaria definir o timeout e boa, o método deles fazem o resto Agora quando você precisa que seu método valide o contexto, aí sempre vai precisar do for/select. req, _ := http.NewRequest(http.MethodGet, "httpbin.org/get", nil) ctx, cancel := context.WithTimeout(context.Background(), time.Duration(time.Millisecond*80)) defer cancel() req = req.WithContext(ctx) // aqui nesse ponto você n precisa fazer mais nada, ele cuida desse for/select pra você