Dışa Aktarılan ve Aktarılmayan İsimler
Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 4 / 107.
Go'da, bir ismin ilk harfi onun görünürlüğünü belirler. Büyük harfle başlayan isimler dışa aktarılır (diğer paketlerden erişilebilir). Küçük harfle başlayan isimler dışa aktarılmaz (pakete özeldir).
Dışa aktarılan isimler — paketin dışından görülebilir
type User struct {
Name string // Dışa aktarılan alan
Email string // Dışa aktarılan alan
}
func CreateUser(name string) User { // Dışa aktarılan fonksiyon
return User{Name: name}
}Dışa aktarılmayan isimler — yalnızca paket içinde görünür
type secret struct { // Dışa aktarılmayan struct
password string // Dışa aktarılmayan alan
}
func validate() bool { // Dışa aktarılmayan fonksiyon
return true
}Karma — bazı dışa aktarılmamış alanlara sahip dışa aktarılmış struct
type Account struct {
Username string // Dışa aktarılmış - her yerden erişilebilir
Email string // Dışa aktarılmış - her yerden erişilebilir
password string // Dışa aktarılmamış - sadece paket içinden
}Bu adlandırma kuralı, diğer dillerde bulunan public ve private gibi erişim belirleyicilerinin yerini alır.
// Büyük harf = Dışa aktarılan (public)
// Küçük harf = Dışa aktarılmayan (private)
func SaveData() {} // Dışa aktarılan
func loadData() {} // Dışa aktarılmayanBu kurala uymak Go'da esastır. Diğer paketler kodunuzu içe aktardığında, yalnızca büyük harfle başlayan isimlere erişebilirler.
Görev
Ortaproduct.go dosyasındaki tüm isimleri Go'nun dışa aktarılan (exported) adlandırma kuralına uyacak şekilde düzeltin. Şu öğelerin ilk harfini büyük yapın:
- Struct adı:
product→Product - Tüm alan (field) adları:
name,price,stock - Tüm fonksiyon adları:
totalValue,displayInfo - Fonksiyonların içindeki tüm alan referansları
Kopya kağıdı
Go'da, bir ismin ilk harfi onun görünürlüğünü belirler:
- Büyük harf = Dışa aktarılan (diğer paketlerden erişilebilir)
- Küçük harf = Dışa aktarılmayan (pakete özel)
Dışa aktarılan isimler:
type User struct {
Name string // Dışa aktarılan alan
Email string // Dışa aktarılan alan
}
func CreateUser(name string) User { // Dışa aktarılan fonksiyon
return User{Name: name}
}Dışa aktarılmayan isimler:
type secret struct { // Dışa aktarılmayan struct
password string // Dışa aktarılmayan alan
}
func validate() bool { // Dışa aktarılmayan fonksiyon
return true
}Karma görünürlük:
type Account struct {
Username string // Dışa aktarılan - her yerden erişilebilir
Email string // Dışa aktarılan - her yerden erişilebilir
password string // Dışa aktarılmayan - sadece paket içinden
}Bu isimlendirme kuralı, diğer dillerde bulunan public ve private gibi erişim belirleyicilerin yerini alır.
Kendin dene
package main
import "fmt"
func main() {
var name string
var price float64
var stock int
fmt.Scan(&name, &price, &stock)
p := Product{
Name: name,
Price: price,
Stock: stock,
}
fmt.Println(DisplayInfo(p))
fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}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