Middle
Неге Go'догу боштонду интерфейс кез келген түргө айлантылат?
sobes.tech AI
AIден жооп
Бос интерфейс interface{} ыкметтерди камтыбайт. Goда ар кандай түр, ыкметтерди талап кылбаган интерфейсти аткара алат. Ошондуктан, ар кандай түрдүн мааниси interface{} түрүндөгү өзгөрмөгө берилет же interface{} кабыл алган функцияга өткөрүлөт. Негизинен, interface{} ар кандай түрдүн мааниси үчүн контейнер болуп, ал маанини жана анын түрүн сактайт.
package main
import "fmt"
func main() {
var i interface{} // Бос интерфейс өзгөрмөсүн жарыялайбыз
i = 42 // int маанисин берүү
fmt.Printf("Мән: %v, Төрү: %T\n", i, i)
i = "салам" // string маанисин берүү
fmt.Printf("Мән: %v, Төрү: %T\n", i, i)
i = true // bool маанисин берүү
fmt.Printf("Мән: %v, Төрү: %T\n", i, i)
i = struct{}{} // бош структураны берүү
fmt.Printf("Мән: %v, Төрү: %T\n", i, i)
}
interface{}-тен конкреттүү түргө өткөрүү үчүн тип тастыктоо (type assertion) же типти алмаштыруу (type switch) колдонулат.
package main
import "fmt"
func main() {
var i interface{} = " дүйнө"
// Типти тастыктоо
s, ok := i.(string) // маанинин string экенин текшерүү
if ok {
fmt.Println("Типти тастыктоо ийгиликтүү:", s)
} else {
fmt.Println("Типти тастыктоо ийгиликсиз")
}
// Типти алмаштыруу
switch v := i.(type) {
case int:
fmt.Println("Тип: int, мааниси:", v)
case string:
fmt.Println("Тип: string, мааниси:", v)
default:
fmt.Println("Белгисиз түр")
}
}