اختبارات

reflect 2

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


package main

import "reflect"

type T struct{
  A int
  b int
}

func (T) M() {}
func (T) m() {}

func main() {
	v := reflect.ValueOf(T{})
	println(v.NumField(), v.NumMethod())
}

الخيارات:

  • 1 1
  • 1 2
  • 2 1
  • 2 2

الإجابة: 2 1

شغِّله على Go play.

النقطة الأساسية:

  • تعدّ طريقة reflect.Value.NumMethod الطرق المصدَّرة فقط لأنواع/قيم غير الواجهات.
  • تعدّ طريقة reflect.Value.NumField الحقول المصدَّرة وغير المصدَّرة معًا.