如何计算Go的迭代次数?

So I have this small piece of code that iterates as long as needed until the difference between the value sought after is abysmal. I want to count and print the number of iterations after the code is done running and preferably in my main function (along with printing everything else I need).

Edit: Okay, I've managed to do it like this. I wonder if there's an easier way of counting the iterations and passing them to the output function.

func sqrt(x float64) (float64, int) {
    k := 1
    z := 1.0
    q := (z*z - x)/(2*z)
    for {
      if  math.Abs(-q) > 0.001 {
      z -= q
      q = (z*z - x)/(2*z)
      k += 1
      } else {
        break
      }
    }
    return z, k
}

func main() {
    k := 1
    z := 1.0
    z, k = sqrt(9)
    fmt.Println("Your sqrt = ", z)
    fmt.Println("Math Sqrt = ",math.Sqrt(9))
    fmt.Println("Iterations: ", k)
}

You can return your float value and an int (as the number of iterations). I made very minor revision to your example to demonstrate.

func sqrt(x float64) (float64, int) {

    z := 1.0
    i := 1
    q := (z*z - x) / (2 * z)
    for {
        if math.Abs(-q) > 0.01 {
            i++
            z -= q
            q = (z*z - x) / (2 * z)
        } else {
            break
        }
    }
    return z, i
}

func main() {
    f, i := sqrt(9)
    fmt.Printf("result: %f iterations: %d
", f, i)
    fmt.Println(math.Sqrt(9))
}

You can provide multiple return values through your function:

func main() {
    numLoops, newNum := sqrt(9)
}

func sqrt(x float64) (int, float64) {
    <implementation>
}

GoPlay here: https://play.golang.org/p/R2lV41EbEd