Yapı Tanımlama ve Kullanma
Yapı sabitleri, alan erişimi ve gömme
Yapı Tanımlama ve Kullanma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Yapı Nedir
Bir yapı, farklı türlerdeki ilişkili alanları tek bir adlandırılmış tür altında gruplar. Go'da özel veri yapıları tanımlamanın temel mekanizmasıdır; kalıtım olmadan sınıfa benzer.
Yapı Bildirimi
type anahtar sözcüğüyle bir yapı türü tanımlayınız:
package main
import "fmt"
type Person struct {
Name string
Age int
City string
}
func main() {
p := Person{Name: "Alice", Age: 30, City: "London"}
fmt.Println(p)
}Yapı Değişmezleri
İki biçim vardır: adlandırılmış alanlar (tercih edilir) ve konumsal alanlar (sıraya bağlı ve kırılgandır):
package main
type Point struct{ X, Y int }
func main() {
p1 := Point{X: 1, Y: 2} // named — preferred
p2 := Point{3, 4} // positional — avoid in non-test code
_ = p1; _ = p2
}Alanlara Erişme
Alanları okumak ve yazmak için nokta gösterimini kullanınız:
package main
import "fmt"
type Car struct{ Brand string; Speed int }
func main() {
c := Car{Brand: "Tesla", Speed: 200}
fmt.Println(c.Brand) // Tesla
c.Speed = 250
fmt.Println(c.Speed) // 250
}Bir Yapının Sıfır Değeri
Bir yapının sıfır değerinde tüm alanlar kendi sıfır değerlerine ayarlanır. Başlatma yapmadan güvenle kullanabilirsiniz:
package main
import "fmt"
type Config struct{ Debug bool; Port int; Host string }
func main() {
var cfg Config
fmt.Println(cfg) // {false 0 }
cfg.Port = 8080
fmt.Println(cfg) // {false 8080 }
}Yapı Karşılaştırması
Tüm alanları karşılaştırılabilirse yapılar == ile karşılaştırılabilir:
package main
import "fmt"
type Point struct{ X, Y int }
func main() {
a := Point{1, 2}
b := Point{1, 2}
c := Point{3, 4}
fmt.Println(a == b) // true
fmt.Println(a == c) // false
}Yapılar Değer Türleridir
Bir yapı atandığında tüm alanları kopyalanır. Kopyada yapılan değişiklikler özgün yapıyı etkilemez:
package main
import "fmt"
type Rect struct{ W, H int }
func main() {
r1 := Rect{10, 20}
r2 := r1
r2.W = 99
fmt.Println(r1) // {10 20}
fmt.Println(r2) // {99 20}
}İç İçe Yapılar
Bir yapı alanının kendisi de bir yapı olabilir:
package main
import "fmt"
type Address struct{ City, Country string }
type Employee struct {
Name string
Age int
Address Address
}
func main() {
e := Employee{Name: "Bob", Age: 28, Address: Address{"Berlin", "DE"}}
fmt.Println(e.Address.City) // Berlin
}Dışa Aktarılan ve Dışa Aktarılmayan Alanlar
Büyük harfle başlayan alanlar dışa aktarılır (genel). Küçük harfle başlayan alanlar dışa aktarılmaz (paket içidir):
package main
type config struct {
host string // unexported
Port int // exported
}
func main() {
c := config{host: "localhost", Port: 8080}
_ = c
}Yapı Etiketleri
Yapı etiketleri üst veri sağlar (örneğin JSON kodlaması için). Alan türünden sonra dize değişmezleri olarak yer alırlar:
package main
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email,omitempty"`
}
func main() { _ = User{} }Kısa Kontrol
Bir yapıdaki bool alanının sıfır değeri nedir?
Özet: Yapılar
Temel çıkarımlar:
- Yapılar, ilişkili alanları adlandırılmış bir türde gruplar
- Adlandırılmış alan değişmezlerini kullanınız; konumsal kullanımdan kaçınınız
- Yapılar değer türleridir; atama kopyalama yapar
- Büyük harfle başlayan alanlar dışa aktarılır
- Yapı etiketleri, encoding/json gibi kitaplıklara üst veri ekler
Alıştırma Görevi
Product yapısını Name string, Price float64 ve InStock bool alanlarıyla tanımlayınız. İki örnek oluşturunuz, bunları == ile karşılaştırınız ve sonucu yazdırınız.
Sıkça Sorulan Sorular
“Yapı Tanımlama ve Kullanma” dersi ücretsiz mi?
Evet — “Yapı Tanımlama ve Kullanma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Yapı Tanımlama ve Kullanma” dersinde ne öğreneceğim?
Yapı sabitleri, alan erişimi ve gömme Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Yapı Tanımlama ve Kullanma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yapı Tanımlama ve Kullanma
- Yapılar Üzerinde Yöntemler
- Yapıcı Örüntüleri
- Anonim Yapılar ve Birleştirme