Comparando inteiros de ponto flutuante em Golang

O exercício Loop and Functions em gotour requer a implementação da função de raiz quadrada usando o método de Newton. E um de seus desafios é

pare quando o valor parar de mudar (ou apenas muda por um delta muito pequeno)

Uma abordagem ingênua de usar o ==operador de comparação golang em tipos float64 levará a um loop infinito neste exercício.

A maneira como resolvo esse desafio é especificando uma tolerância, de forma que dois operandos float64 sejam considerados iguais quando o valor absoluto de seus deltas for menor que a tolerância.

const TOLERANCE = 0.000001
for {
// Newton's method

if diff := math.Abs(result - temp); diff < TOLERANCE { // consider equal and break
break
} else {
// do something and continue
}
}

Minha solução completa para este exercício pode ser encontrada aqui . O mesmo repositório também contém soluções para outros exercícios no gotour.