Sobes.tech
Junior

Go tilida bo'sh interfeysning roli nima?

sobes.tech AI

AIdan javob

Go tilida bo'sh interfeys interface{} har qanday turdagi qiymatlarni saqlay oladi. Bu quyidagi holatlar uchun foydalidir:

  • Kompilyatsiya vaqtida noma'lum bo'lgan ma'lumot turlari bilan ishlaydigan funksiyalar. Masalan, standart kutubxona fmt.Println argument sifatida interface{} turini qabul qiladi.
  • Kolleksiyalarda aralash ma'lumot turlarini saqlash. []interface{} qatori turli turlardagi elementlarni o'z ichiga olishi mumkin.
  • Aniq turlar oldindan ma'lum bo'lmagan holatda polimorfizmni amalga oshirish.

Ammo, bo'sh interfeysdan foydalanish, haqiqiy qiymat va uning metodlariga kirish uchun ish vaqtida turni tasdiqlash (type assertion) yoki tur switch (type switch) qilishni talab qiladi, bu esa turga nisbatan kamroq xavfsiz va aniq turlar yoki yanada maxsus interfeyslar bilan taqqoslaganda kamroq samarali bo'lishi mumkin.

// Bo'sh interfeysdan foydalanish misoli
var data interface{}
data = 10         // data endi int saqlaydi
data = "hello"    // data endi string saqlaydi
data = true       // data endi bool saqlaydi

// Qiymatga kirish uchun tur tasdiqlash
if value, ok := data.(string); ok {
	// value - bu string
	_ = value
}

// Tur switch
switch v := data.(type) {
case int:
	// v - bu int
	_ = v
case string:
	// v - bu string
	_ = v
default:
	// Noma'lum tur
}