Sobes.tech
Middle+

Go və C#-də obyekt yönümlü proqramlaşdırmanın tətbiqini müqayisə edin.

sobes.tech Süni İntellekt

AI-dan cavab

Go-da klassik obyekt yönümlü irsi və siniflər mövcud deyil. Əvəzində, Go kompozisiya və interfeyslərdən istifadə edir.

Əsas fərqlər:

  • Siniflər və obyektlər: C# siniflərə əsaslanır, onlardan obyektlər yaradılır. Go strukturlar (structs) istifadə edir və metodlara malik ola bilər.
  • İrsiyyət: C# tək və çox irsiyyəti (interfeyslər vasitəsilə) dəstəkləyir. Go, strukturların daxil edilməsi (kompozisiya) və interfeyslər vasitəsilə çox formallıq dəstəkləyir.
  • Interfeyslər: C#-da interfeyslər açıq şəkildə tətbiq olunmalıdır. Go-da, interfeyslər qeyri-şüurlu şəkildə tətbiq olunur: əgər struktur interfeysin imzasına uyğun metodlara malikdirsə, onu avtomatik olaraq tətbiq edir.
  • Görünürlük (Əlçatanlıq Modifikatorları): C#-da public, private, protected, internal istifadə olunur. Go-da görünürlük, adın ilk hərfi böyükdürsə, açıq; kiçikdirsə, paket daxilindədir.
  • Generics: C# inkişaf etmiş generics sisteminə malikdir. Go 1.18 versiyasından etibarən generics dəstəyi əlavə etdi.

Go-da kompozisiya nümunəsi:

package main

import "fmt"

type Engine struct {
	Type string
}

func (e Engine) Start() {
	fmt.Printf("%s mühərrik başladı!\n", e.Type)
}

type Car struct {
	Model string
	Engine // Adi daxil etmə - kompozisiya
}

func main() {
	myCar := Car{
		Model: "Sedan",
		Engine: Engine{
			Type: "Benzin",
		},
	}
	fmt.Printf("Maşın modeli: %s\n", myCar.Model)
	myCar.Start() // Daxil edilmiş strukturanın metodunu çağırmaq
}

Interfeys tətbiqi nümunəsi:

package main

import "fmt"

type Speaker interface {
	Speak() string
}

type Dog struct{}

func (d Dog) Speak() string {
	return "Hav!"
}

type Cat struct{}

func (c Cat) Speak() string {
	return "Miyav!"
}

func main() {
	animals := []Speaker{Dog{}, Cat{}} // Speaker interfeysini tətbiq edən tiplər siyahısı
	for _, animal := range animals {
		fmt.Println(animal.Speak())
	}
}

Cədvəldə:

Xüsusiyyət Go C#
Siniflər Yox (struktur) Bəli
Obyektlər Struktur nümunələri Sinif nümunələri
İrsiyyət Kompozisiya, interfeyslər Klassik (sadə), interfeyslər
Interfeys Qeyri-şüurlu tətbiq Açıqlama ilə tətbiq
Görünürlük Birinci hərf böyükdür public, private, protected və s.
Generics Versiya 1.18-dən etibarən Bəli

Go-nun OOP yanaşması daha çox mərkəzsiz və davranışa (interfeyslər vasitəsilə) və məlumat strukturlarına (daxil etmə ilə) yönəlib, bu da daha çevik və asan test edilə bilən kodlara gətirib çıxarır. C# daha ənənəvi və hierarxik modeli izləyir.