اختبارات

النطاق 1

ماذا يطبع البرنامج التالي؟


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 المعرَّف في الكتلة الداخلية ليس إعادة تعريف للمتغير (نتيجة الإرجاع) المعرَّف في الكتلة العليا للدالة. إنه متغير معرَّف جديد تماماً. لذا لا تُعدَّل نتيجة الإرجاع في الكتلة الداخلية.