Menu
Coddy logo textTech

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
30

Alanları işaretçi (pointer) aracılığıyla da değiştirebilirsiniz:

personPtr.age = 31
fmt.Println(person.age)  // Çıktı: 31
challenge icon

Gö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 = 31

Kendin 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)
}
quiz iconKendini test et

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