Ketika kami benar-benar memeriksa kode sumber pustaka standar Go, kami dapat melihat di mana gotosebenarnya diterapkan dengan baik.
Sebagai contoh, dalam math/gamma.goberkas, yang gotopernyataan digunakan :
for x < 0 {
if x > -1e-09 {
goto small
}
z = z / x
x = x + 1
}
for x < 2 {
if x < 1e-09 {
goto small
}
z = z / x
x = x + 1
}
if x == 2 {
return z
}
x = x - 2
p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6]
q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7]
return z * p / q
small:
if x == 0 {
return Inf(1)
}
return z / ((1 + Euler*x) * x)
}
Dalam gotokasus ini, kita tidak perlu memasukkan variabel lain (boolean) yang digunakan hanya untuk aliran kontrol, diperiksa di bagian akhir. Dalam hal ini , gotopernyataan tersebut membuat kode sebenarnya lebih baik untuk dibaca dan lebih mudah diikuti (sangat bertentangan dengan argumen yang menentang yang gotoAnda sebutkan).
Perhatikan juga, bahwa gotopernyataan tersebut memiliki kasus penggunaan yang sangat spesifik. The spesifikasi bahasa di goto menyatakan bahwa hal itu mungkin tidak melompati variabel yang masuk ke lingkup (yang dinyatakan), dan mungkin tidak melompat ke blok lainnya (kode-).