Os Go
criadores do idioma escrevem :
Go não fornece afirmações. Eles são inegavelmente convenientes, mas nossa experiência tem sido de que os programadores os usam como muleta para evitar pensar em manipulação e relatório de erros adequados. O tratamento adequado de erros significa que os servidores continuam a operação após erros não fatais, em vez de travarem. O relatório de erros adequado significa que os erros são diretos e diretos, evitando que o programador interprete um grande rastreamento de falha. Erros precisos são particularmente importantes quando o programador que está vendo os erros não está familiarizado com o código.
Qual é a sua opinião sobre isso?
reflect.DeepEqual
, certamente não precisa . É conveniente, mas com o custo do desempenho (os testes de unidade são um bom caso de uso). Caso contrário, você poderá implementar qualquer verificação de igualdade apropriada para sua "coleção" sem muita dificuldade.
for
loop no Go (assim como C). Ele iria ser muito bom ter operações fatia genéricos, embora a comparação fica complicada quando os ponteiros e estruturas estão envolvidos.