ماذا يطبع البرنامج التالي؟
package main
func f(n int) (r int) {
a, r := n-1, n+1
if a+a == r {
c, r := n, n*n
r = r - c
}
return r
}
func main() {
println(f(3))
}
الخيارات:
- 4
- 6
الإجابة: 4
شغّله على Go play.
النقطة الأساسية:
- المتغير
rالمعرَّف في الكتلة الداخلية ليس إعادة تعريف للمتغير (نتيجة الإرجاع) المعرَّف في الكتلة العليا للدالة. إنه متغير معرَّف جديد تماماً. لذا لا تُعدَّل نتيجة الإرجاع في الكتلة الداخلية.