Sobes.tech
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.Println acceptă argumente de tip interface{}.
  • 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
}