انٹرفیس کی عقلمندی کی تصدیق

تصدیق کریں کہ کمپائل ٹائم پر انٹرفیس کو مطمئن کرتا ہے۔ اس میں شامل ہیں:

  • ایک خصوصی انٹرفیس کو پورا کرنے والا نکالے گئے قسم کی جانچ پڑتال
  • وہ تمام قسمیں (نکالی گئی اور غیر نکالی گئی) جو ہمیشہ ایک ہی انٹرفیس کو پورا کرتی ہیں، ان پر لاگو ہوتے ہیں
  • کسی بھی سیکچو انٹرفیس کی عقلمندی کی جانچ میں خلل وقف تشکیل دے گا اور صارف کو مطلع کرے گا

اضافہ: اوپر دیے گئے تین نکتوں کے تحت کمپائلر کی انٹرفیس کی جانچ کا نظام ہے۔ اس کا عام تصور یہ ہے کہ انٹرفیس کے استعمال میں خطا کمپائل ٹائم پر رپورٹ ہو گی۔ لہذا، یہ نظام کمپائل ٹائم پر کچھ مسائل کو ظاہر کرنے کے لئے استعمال کیا جا سکتا ہے۔

تجویز نہیں کیا گیا روشناس

// اگر ہینڈلر http.Handler پر عمل نہیں کرتا ہے تو وقت e ایک خرابی واقع ہوگی
type Handler struct {
  // ...
}
func (h *Handler) ServeHTTP(
  w http.ResponseWriter,
  r *http.Request,
) {
  ...
}

تجویز کی گئی روشناس

type Handler struct {
  // ...
}
// استعمال کیا گیا ہے تاکہ کمپائل ٹائم پر انٹرفیس کی عقلمندی کا نظام ٹریگر ہو
// اگر ہینڈلر http.Handler کو پورا نہیں کرتا ہے، تو کمپائل ٹائم پر خرابی واقع ہوگی
var _ http.Handler = (*Handler)(nil)
func (h *Handler) ServeHTTP(
  w http.ResponseWriter,
  r *http.Request,
) {
  // ...
}

اگر *Handler http.Handler کے انٹرفیس سے میل نہیں کرتا ہے، تو بیان var _ http.Handler = (*Handler)(nil) کمپائل نہیں ہو گا۔

تصدیق شدہ نوع کی صفر قیمت ہونی چاہئے۔ پوائنٹر نوعوں (جیسے *Handler)، سلائس، اور نقشے کے لئے یہ nil ہوتا ہے؛ ساختمانی نوعوں کے لئے، یہ خالی ساختمان ہوتی ہے۔

type LogHandler struct {
  h   http.Handler
  log *zap.Logger
}
var _ http.Handler = LogHandler{}
func (h LogHandler) ServeHTTP(
  w http.ResponseWriter,
  r *http.Request,
) {
  // ...
}