ماذا يطبع البرنامج التالي؟
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الحقول المصدَّرة وغير المصدَّرة معًا.