Middle
Nega Go'da bo'sh interfeys har qanday turga aylantirilishi mumkin?
sobes.tech AI
AIdan javob
Bo'sh interfeys interface{} metodlarni o'z ichiga olmaydi. Go'da har qanday tur metodlarni talab qilmaydigan interfeysni qondirishi mumkin. Shuning uchun, har qanday turning qiymati interface{} turidagi o'zgaruvchiga tayinlanishi yoki interface{} qabul qiladigan funktsiyaga uzatilishi mumkin. Aslida, interface{} har qanday turdagi qiymat uchun konteyner bo'lib, u qiymat va uning turini saqlaydi.
package main
import "fmt"
func main() {
var i interface{} // Bo'sh interfeys o'zgaruvchisini e'lon qilamiz
i = 42 // int qiymatini tayinlaymiz
fmt.Printf("Qiymat: %v, Tur: %T\n", i, i)
i = "salom" // string qiymatini tayinlaymiz
fmt.Printf("Qiymat: %v, Tur: %T\n", i, i)
i = true // bool qiymatini tayinlaymiz
fmt.Printf("Qiymat: %v, Tur: %T\n", i, i)
i = struct{}{} // bo'sh struktura tayinlaymiz
fmt.Printf("Qiymat: %v, Tur: %T\n", i, i)
}
interface{} dan aniq turga o'tkazish uchun tip tasdiqlash (type assertion) yoki tip switch ishlatiladi.
package main
import "fmt"
func main() {
var i interface{} = "dunyo"
// Tip tasdiqlash
s, ok := i.(string) // qiymat stringmi yoki yo'qligini tekshiradi
if ok {
fmt.Println("Tip tasdiqlash muvaffaqiyatli:", s)
} else {
fmt.Println("Tip tasdiqlash muvaffaqiyatsiz")
}
// Tip switch
switch v := i.(type) {
case int:
fmt.Println("Tip int, qiymat:", v)
case string:
fmt.Println("Tip string, qiymat:", v)
default:
fmt.Println("Noma'lum tur")
}
}