Struct Pointer'ları
Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası — ders 97 / 109.
Struct'larla çalışırken, diğer türlerde olduğu gibi onlara işaret eden pointer'lar oluşturabilirsiniz. Bu, büyük struct'ları verimli bir şekilde iletmek için kullanışlıdır.
Bir Person struct'ı tanımlayın ve ona bir işaretçi (pointer) oluşturun:
type Person struct {
name string
age int
}
func main() {
person := Person{name: "Alice", age: 30}
// Struct'a bir işaretçi oluşturun
personPtr := &person
// İşaretçi üzerinden alanlara erişin
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
}Çıktı, alanlara işaretçi aracılığıyla erişebileceğimizi gösteriyor:
Alice
30Alanları işaretçi (pointer) aracılığıyla da değiştirebilirsiniz:
personPtr.age = 31
fmt.Println(person.age) // Çıktı: 31Görev
BaşlangıçBu meydan okumada, Go'da struct işaretçileri ile çalışma pratiği yapacaksınız. name ve age alanlarına sahip bir Person struct'ınız var. Göreviniz, struct'a yönelik bir işaretçi kullanarak kişinin bilgilerini güncellemektir.
Kod halihazırda bir Person struct'ı ve ona işaret eden bir işaretçi oluşturuyor. Kişinin bilgilerini işaretçi üzerinden değiştirmeniz gerekiyor.
Kopya kağıdı
& operatörünü kullanarak struct'lara işaretçiler oluşturun:
type Person struct {
name string
age int
}
person := Person{name: "Alice", age: 30}
personPtr := &personİşaretçiler aracılığıyla struct alanlarına erişin ve bunları değiştirin:
// Alanlara erişim
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
// Alanları değiştirme
personPtr.age = 31Kendin dene
package main
import "fmt"
// Person yapısı, isim ve yaş alanlarını içerir
type Person struct {
name string
age int
}
func main() {
// Bir Person yapısı oluştur
person := Person{
name: "John",
age: 25,
}
// Person yapısına bir işaretçi (pointer) oluştur
personPtr := &person
// Orijinal kişi bilgilerini yazdır
fmt.Println("Original person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
// TODO: İşaretçiyi kullanarak kişinin adını "Jane" ve yaşını 30 olarak değiştirin
// İpucu: Yapı alanlarına bir işaretçi üzerinden nokta notasyonu kullanarak erişebilirsiniz
// Güncellenmiş kişi bilgilerini yazdır
fmt.Println("Updated person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Karşılaştırma ve Mantıksal Operatörler
Karşılaştırma Operatörleri - Bölüm 1Karşılaştırma Operatörleri - Bölüm 2Mantıksal VE OperatörüMantıksal VEYA OperatörüMantıksal DEĞİL OperatörüOperatör Önceliği TemelleriÖzet - Karşılaştırma Yapma7Kontrol Akışı: Döngüler
`for` Döngüsü Nedir?`for` Döngüsü - Temel`for` Döngüsü - Sadece Koşul`break` Anahtar Kelimesi`continue` Anahtar Kelimesiİç İçe DöngülerÖzet - İşlemleri Tekrarlama10Bileşik Tipler: Diziler
Dizilere GirişDizileri TanımlamaDizilere İlk Değer AtamaDizi Elemanlarına Erişme`len` ile Dizi UzunluğuDiziler Üzerinde YinelemeÇok Boyutlu Diziler13Bileşik Tipler: Struct'lar
Özel Tipler TanımlamaStruct Örnekleri OluşturmaStruct Alanlarına ErişmeStruct Pointer'larıStruct'ları BaşlatmaGömülü Struct'larAnonim Struct'larÖzet - Özel Veri Yapıları2Değişkenler ve Temel Veri Tipleri
Değişken nedir?`:=` ile Tür ÇıkarımıTam Sayılar (int)Ondalıklı SayılarBooleanlarStringlerSıfır DeğerlerSabitlerİsimlendirme KurallarıÖzet - Değişkenler ve Türler5Temel Giriş/Çıkış
Biçimlendirilmiş ÇıktıBiçim BelirteçleriVeri Tiplerini YazdırmaTemel Kullanıcı Girdisi AlmaÖzet - Giriş ve Çıkış8Fonksiyonlar
Fonksiyonları AnlamakFonksiyon TanımlamaFonksiyonları ÇağırmaFonksiyon ParametreleriTek Bir Değer DöndürmeBirden Fazla Değer Döndürmeİsimlendirilmiş Dönüş DeğerleriFonksiyon Kapsamı TemelleriÖzet - Yeniden Kullanılabilir Kod Oluşturma3Temel Operatörler
Aritmetik OperatörlerBölme OperatörüModulo OperatörüAtama OperatörüBileşik Atama OperatörleriArtırma ve AzaltmaÖzet - Hesaplamalar6Kontrol Akışı: Koşullu İfadeler
`if` İfadesi`else` Anahtar Kelimesi`else if` Anahtar Kelimesi`if` İçinde Değişken GölgelemeDeğişkenleri Başlatma`switch` İfadesiİfadeli `switch`İfadesiz `switch``fallthrough` Anahtar KelimesiÖzet - Karar Verme