Sobes.tech
Junior

Ինչպե՞ս կարող եք ստուգել ինտերֆեյսի տիպը Go-ում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում հաճախ օգտագործվում է type assertion կամ type switch՝ ինտերֆեյսի տիպը ստուգելու համար:

Եթե لديك փոփոխական տիպի ինտերֆեյս, օրինակ var i interface{}, և ցանկանում եք ստուգել, արդյոք այն իրականացնում է կոնկրետ ինտերֆեյս, կամ կոնկրետ տիպի է, կարող եք անել հետևյալ կերպ՝

if v, ok := i.(MyInterface); ok {
    // i իրականացնում է MyInterface, v - փոխարկված տիպը
}

Կարող եք օգտագործել type switch՝ մի քանի տիպերի ստուգման համար՝

switch v := i.(type) {
case MyInterface:
    // i իրականացնում է MyInterface
case *MyStruct:
    // i - MyStruct-ի ցուցիչ
default:
    // այլ տիպ
}

Եթե ցանկանում եք ավելի դինամիկ կերպով ստուգել տիպը, կարող եք օգտագործել reflect փաթեթը՝

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i իրականացնում է MyInterface
}

Այսպիսով, պարզ դեպքերում բավարար է type assertion կամ type switch-ը, իսկ ավելի բարդ դեպքերում՝ reflection-ը։