Just looking for some feedback on my solution for Tour of Go Exercise 24 - Loops and Functions. Is there anything that looks like a wrong way to do things in go? anything I could have done better?
package main
import (
"fmt"
"math"
)
func Approx(x float64, z float64) float64 {
return z - (((z * z) - x) / (2 * z))
}
func Sqrt(x float64) float64 {
previous := 0.0
delta := 1.0
z := x
for delta > 0.005 {
z = Approx(x, z)
if previous > 0.0 {
delta = previous - z
}
previous = z
}
return z
}
func main() {
for i := 1; i < 11; i++ {
value := float64(i)
fmt.Println("Calculating Sqrt for ", value)
real := math.Sqrt(value)
approx := Sqrt(value)
fmt.Println("Real ", real)
fmt.Println("Approx ", approx)
}
}
1 Answer 1
One tiny thing: If you drop one set of parentheses:
return z - ((z * z - x) / (2 * z))
and then run go fmt
, it will change it to
return z - ((z*z - x) / (2 * z))
The expressions around the *
are close to the *
and the expressions around the -
are spaced out. In other words, go fmt
implies the correct precedence.
Also, using line breaks to separate "sections" of a function is good, but there's no need to add an extra linebreak at the very beginning of a function or just before a }
.