जब हम वास्तव में गो मानक पुस्तकालय के स्रोत कोड की जांच करते हैं, तो हम देख सकते हैं कि goto
वास्तव में कहां लागू होते हैं।
उदाहरण के लिए, में math/gamma.go
फ़ाइल, बयान का इस्तेमाल किया है :goto
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)
}
goto
इस मामले में सिर्फ नियंत्रण प्रवाह के लिए इस्तेमाल किया एक और (बुलियन) चर, अंत में शुरू करने के लिए जाँच की से हमें बचाता है। इस मामले में , goto
कथन वास्तव में कोड को पढ़ने और आसान पालन करने के लिए बेहतर बनाता है ( goto
आपके द्वारा बताए गए तर्क के विपरीत )।
यह भी ध्यान दें, कि goto
कथन का बहुत विशिष्ट उपयोग-मामला है। गोटो पर भाषा विनिर्देश कहा गया है कि यह खत्म हो गया दायरे में आने से चर कूद नहीं हो सकता है (घोषित किया गया), और यह अन्य (code-) ब्लॉक में कूद नहीं कर सकते।