Go dilində növ cəmi (type sum) necə həyata keçirilə bilər?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, növ cəm (type sum) üçün birbaşa dəstək yoxdur, məsələn, bəzi funksional dillərdə (Haskell, Scala). Ancaq, oxşar effekti interfeys və type switch istifadə etməklə əldə etmək mümkündür.
Go'da interfeys metodların toplusunu təsvir edir və bu metodları həyata keçirən hər hansı bir növ interfeysi təmin edir. Növ cəmini həyata keçirmək üçün, metodları olmayan (boş interfeys interface{}) və ya ümumi metodlara malik interfeys təyin edilə bilər və sonra runtime zamanı konkret növü müəyyən etmək üçün type switch istifadə edilə bilər.
Nümunə:
package main
import "fmt"
type Shape interface{} // boş interfeys, hər hansı növ ola bilər
func area(s Shape) float64 {
switch v := s.(type) {
case Circle:
return 3.14 * v.Radius * v.Radius
case Rectangle:
return v.Width * v.Height
default:
return 0
}
}
type Circle struct {
Radius float64
}
type Rectangle struct {
Width, Height float64
}
func main() {
c := Circle{Radius: 5}
r := Rectangle{Width: 3, Height: 4}
fmt.Println(area(c)) // 78.5
fmt.Println(area(r)) // 12
}
Beləliklə, interfeys və type switch, növ cəminə bənzər davranış həyata keçirməyə imkan verir, burada dəyişən müxtəlif növ dəyərlər ala bilər və növə görə müvafiq məntiq icra olunur.