0Pricing
Go Academy · Ders

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

  1. Yapı Tanımlama ve Kullanma
  2. Yapılar Üzerinde Yöntemler
  3. Yapıcı Örüntüleri
  4. Anonim Yapılar ve Birleştirme
← Go Academy Sayfasına Dön