Junior — Middle
Արդյոք Go-ի կառուցվածքը համատեղելի է Comparable ինտերֆեյսի հետ?
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, Comparable ինտերֆեյսը չի հանդիսանում ներմուծված ստանդարտի մաս, բայց հաճախ այն հասկանում են որպես ինտերֆեյս՝ համեմատության մեթոդով, օրինակ՝
type Comparable interface {
Compare(other interface{}) int // վերադարձնում է -1, 0, 1
}
Go-ում կառուցվածքը համատեղելի է ինտերֆեյսի հետ, եթե այն իրականացնում է այդ ինտերֆեյսի բոլոր մեթոդները։ Այլ կերպ ասած, եթե ձեր կառուցվածքը իրականացնում է Compare մեթոդը անհրաժեշտ սիգնատուրայով, ապա այն համատեղելի է Comparable-ի հետ։
Օրինակ՝
type MyStruct struct {
Value int
}
func (m MyStruct) Compare(other interface{}) int {
o, ok := other.(MyStruct)
if !ok {
return -2 // կամ սխալի մշակում
}
if m.Value < o.Value {
return -1
} else if m.Value > o.Value {
return 1
}
return 0
}
// Այժմ MyStruct-ը իրականացնում է Comparable
Եթե Compare մեթոդը չի իրականացվում, կառուցվածքը չի համատեղվում Comparable-ի հետ։