Junior
Care este rolul interfeței goale în limbajul Go?
sobes.tech AI
Răspuns de la AI
Interfața goal interface{} în Go poate stoca valori de orice tip. Acest lucru o face utilă pentru următoarele scenarii:
- Funcții care lucrează cu tipuri de date necunoscute în timpul compilării. De exemplu, biblioteca standard
fmt.Printlnacceptă argumente de tipinterface{}. - Stocarea tipurilor de date mixte în colecții. Slice-ul
[]interface{}poate conține elemente de diferite tipuri. - Implementarea polimorfismului atunci când tipurile specifice nu sunt cunoscute în prealabil.
Cu toate acestea, utilizarea interfeței goale necesită efectuarea unei afirmații de tip (type assertion) sau a unui switch de tip (type switch) în timpul execuției pentru a accesa valoarea reală și metodele sale, ceea ce poate fi mai puțin sigur din punct de vedere al tipurilor și mai puțin eficient comparativ cu utilizarea tipurilor specifice sau a interfețelor mai specializate.
// Exemplu de utilizare a interfeței goale
var data interface{}
data = 10 // data acum stochează un int
data = "hello" // data acum stochează un string
data = true // data acum stochează un bool
// Afirmare de tip pentru accesarea valorii
if value, ok := data.(string); ok {
// value este un string
_ = value
}
// Switch de tip
switch v := data.(type) {
case int:
// v este un int
_ = v
case string:
// v este un string
_ = v
default:
// Tip necunoscut
}