Sobes.tech
Junior

Go dilində boş interfeysin rolu nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində boş interfeys interface{} hər hansı bir növün dəyərlərini saxlaya bilər. Bu, aşağıdakı ssenarilər üçün faydalıdır:

  • Kompilyasiya vaxtında məlum olmayan məlumat tipləri ilə işləyən funksiyalar. Məsələn, standart kitabxana fmt.Println arqument kimi interface{} tipini qəbul edir.
  • Kolleksiyalarda qarışıq məlumat tiplərinin saxlanması. []interface{} dilimi müxtəlif tiplərdə elementlərə sahib ola bilər.
  • Xüsusi tiplər əvvəlcədən məlum olmayan zaman çox formallıq tətbiqi.

Ancaq, boş interfeysi istifadə etmək, əsl dəyərə və onun metodlarına giriş üçün zamanında tip təsdiqi (type assertion) və ya tip switch (type switch) həyata keçirməyi tələb edir, bu isə daha az tip təhlükəsiz və daha az səmərəli ola bilər, xüsusi tiplər və ya daha ixtisaslaşmış interfeyslərlə müqayisədə.

// Boş interfeysin istifadəsinə nümunə
var data interface{}
data = 10         // data indi int saxlayır
data = "hello"    // data indi string saxlayır
data = true       // data indi bool saxlayır

// Dəyərə giriş üçün tip təsdiqi
if value, ok := data.(string); ok {
	// value bir stringdir
	_ = value
}

// Tip switch
switch v := data.(type) {
case int:
	// v bir int
	_ = v
case string:
	// v bir string
	_ = v
default:
	// Məlumat olmayan tip
}