Go'da OOP'ye Giriş
Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 5 / 107.
Go'da sınıflar yoktur, ancak nesne yönelimli programlamayı structs ve methods aracılığıyla gerçekleştirir. Bir struct ilgili verileri gruplandırır ve metotlar bu struct'a bağlı davranışı tanımlar.
Veri tutmak için bir struct tanımlayın
type Dog struct {
Name string
Age int
}Struct'a bir metot ekleyin
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}Bir örnek oluşturun ve kullanın
package main
import "fmt"
type Dog struct {
Name string
Age int
}
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}
func main() {
myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Çıktı: Buddy says Woof!
fmt.Println(myDog.Age) // Çıktı: 3
}Go'da, metot isminden önceki (d Dog) kısmına receiver (alıcı) adı verilir. Bu, metodu Dog struct'ına bağlar; tıpkı diğer dillerde metotların sınıflara ait olması gibi.
Görev
KolayGo'nun OOP yaklaşımını pratik etmek için bir metodu olan bir Cat struct'ı oluşturun:
Name(string) veAge(int) alanlarına sahip birCatstruct'ı tanımlayın- Kedinin adını ve ardından
" says Meow!"ifadesini döndüren birSpeakmetodu ekleyin
Kopya kağıdı
Go, nesne yönelimli programlamayı struct'lar ve metotlar aracılığıyla gerçekleştirir. Bir struct ilgili verileri gruplandırır ve metotlar bu struct'a bağlı davranışları tanımlar.
Veri tutmak için bir struct tanımlayın:
type Dog struct {
Name string
Age int
}Bir alıcı (receiver) kullanarak struct'a bir metot bağlayın:
func (d Dog) Bark() string {
return d.Name + " says Woof!"
}Metot isminden önceki (d Dog) kısmı, metodu struct'a bağlayan alıcıdır (receiver).
Bir örnek oluşturun ve onu kullanın:
myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Çıktı: Buddy says Woof!
fmt.Println(myDog.Age) // Çıktı: 3Kendin dene
package main
import "fmt"
func main() {
var name string
var age int
fmt.Scan(&name, &age)
cat := Cat{Name: name, Age: age}
fmt.Printf("Name: %s\n", cat.Name)
fmt.Printf("Age: %d\n", cat.Age)
fmt.Println(cat.Speak())
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Go OOP Temelleri
Harici DosyalarGo Çalışma Alanı ve ModüllerPaketler ve İçe AktarmalarDışa Aktarılan ve Aktarılmayan İsimlerGo'da OOP'ye GirişSınıf Olarak Struct'larStruct'larda Metot TanımlamaPointer ve Değer AlıcılarStruct BaşlatmaYapıcı FonksiyonlarÖzet - Basit Hesap Makinesi4Arayüzler
Arayüzlere GirişÖrtük UygulamaSözleşme Olarak ArayüzBoş Arayüz (any)Tür OnaylamaTür SeçimiArayüz BileşimiStringer ve Error ArayüzleriÖzet - Şekil Hesaplayıcı7Kapsülleme
Dışa Aktarılan ve Aktarılmayan AlanlarPaket Seviyesinde KapsüllemeGetter ve Setter MetotlarıGo'da Bilgi GizlemeÖzet - Öğrenci Kayıtları10Generics (Go 1.18+)
Generics'e GirişTür ParametreleriTür KısıtlamalarıGeneric Struct'larGeneric Metotlar İçin Geçici ÇözümÖzet - Generic Koleksiyon13Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıAbstract Factory KalıbıObserver KalıbıStrategy Kalıbı2Türler ve Struct'lar: Derinlemesine İnceleme
Temel ve Bileşik TürlerÖzel Tür TanımlamalarıStruct EtiketleriAnonim Struct'larİç İçe Geçmiş Struct'larSıfır Değerler ve VarsayılanlarÖzet - Rehber5Kalıtım Yerine Kompozisyon
Go'da Neden Kalıtım YokStruct Gömme TemelleriMetot YükseltmeBirden Fazla Struct GömmeGömme vs AgregasyonGömülü Metotları GölgelemeÖzet - Çalışan Hiyerarşisi8Hata Yönetimi ve OOP
error ArayüzüÖzel Hata TürleriHata Sarmalama (fmt.Errorf)Sentinel Hatalarerrors.Is() ve errors.As()Panic, Defer ve RecoverÖzet - Dosya Ayrıştırıcı3İşaretçiler ve Bellek
Go'da İşaretçi TemelleriStruct İşaretçileriDeğer ile Geçme ve Referans ile Geçmenew() FonksiyonuGo'da Garbage CollectionÖzet - Linked List Oluşturucu6Go'da Polimorfizm
Interface'ler ile PolimorfizmGo'da Duck TypingInterface Karşılama KurallarıPolimorfik KoleksiyonlarDependency InjectionÖzet - Payment Processor9Eşzamanlılık ve OOP
Goroutine TemelleriKanallar ve İletişimTamponlu ve Tamponsuz KanallarSelect İfadesisync.Mutex ve sync.RWMutexsync.WaitGroupThread-Safe Struct TasarımıÖzet - Worker Pool