Junior
Milline on tühja liidese roll Go keeles?
sobes.tech AI
Vastus AI-lt
Go keeles tühi liides interface{} võib salvestada mis tahes tüüpi väärtusi. See on kasulik järgmistes olukordades:
- Funktsioonid, mis töötavad teadmata andmetüüpidega kompileerimise ajal. Näiteks standardraamatukogu
fmt.Printlnvõtab argumenteinterface{}tüüpi. - Segatüüpi andmete salvestamine kogumitesse.
[]interface{}lõik võib sisaldada erinevat tüüpi elemente. - Polümorfismi rakendamine, kui konkreetsed tüübid ei ole ette teada.
Kuid tühja liidese kasutamine nõuab tüübi kinnitamist (type assertion) või tüübi vahetamist (type switch) jooksvalt, et pääseda ligi tegelikule väärtusele ja selle meetoditele, mis võib olla vähem tüübiturvaline ja vähem tõhus võrreldes konkreetsete tüüpide või spetsiifilisemate liideste kasutamisega.
// Tühi liidese kasutamise näide
var data interface{}
data = 10 // data nüüd hoiab int
ndata = "hello" // data nüüd hoiab stringi
ndata = true // data nüüd hoiab booli
// Tüübi kinnitamine väärtusele ligipääsuks
if value, ok := data.(string); ok {
// value on string
_ = value
}
// Tüübi vahetus
switch v := data.(type) {
case int:
// v on int
_ = v
case string:
// v on string
_ = v
default:
// Tundmatu tüüp
}