Menu
Coddy logo textTech

Sıfır Değerler ve Varsayılanlar

Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 17 / 107.

Go'da her değişkenin bir sıfır değeri vardır: bir değişkeni açıkça başlatmadan bildirdiğinizde atanan varsayılan değer. Sıfır değerlerini anlamak, struct'larla çalışmak için çok önemlidir; çünkü başlatılmamış alanlar bu varsayılanları otomatik olarak alır.

Her türün kendine ait bir sıfır değeri vardır:

TürSıfır Değeri
int, float640
string"" (boş dize)
boolfalse
pointer, slice, mapnil

Bir struct oluşturduğunuzda, açıkça ayarlamadığınız her alan sıfır değerini alır.

type User struct {
    Name   string
    Age    int
    Active bool
}

func main() {
    var u User
    fmt.Println(u.Name)   // "" (boş dize)
    fmt.Println(u.Age)    // 0
    fmt.Println(u.Active) // false
}

Bu, kısmi başlatma için de geçerlidir. Yalnızca belirttiğiniz alanlar özel değerler alır.

u := User{Name: "Alice"}
fmt.Println(u.Age)    // 0
fmt.Println(u.Active) // false

Sıfır değerleri, yapıların açıkça başlatılmadan hemen kullanılabilmesini sağlar. Ancak dilimler ve eşlemeler gibi başvuru türleriyle çalışırken dikkatli olun. Bunların sıfır değeri nil’dir; bu da başlatmadan kullanmaya çalışırsanız çalışma zamanı paniklerine neden olabilir.

challenge icon

Görev

Kolay

Go'da sıfır değerlerin nasıl çalıştığını gösteren bir oyuncu profili sistemi oluşturalım. Bazı alanları açıkça ayarlarken diğerlerinin varsayılan sıfır değerlerine güveneceğin bir oyun profili oluşturacaksın.

Kodunu iki dosyaya ayıracaksın:

  • player.go: Şu alanlara sahip bir Player yapısı tanımla: Username (string), Level (int), Score (int), IsPremium (bool) ve GuildName (string). Ayrıca oyuncunun tüm bilgilerini gösteren biçimlendirilmiş bir dize döndüren bir DisplayProfile yöntemi oluştur.
  • main.go: Girdiden bir kullanıcı adı oku ve yalnızca kısmi başlatma kullanarak bir Player oluştur: sadece Username alanını ayarla. Ardından, Go'nun ayarlanmamış alanları sıfır değerleriyle nasıl doldurduğunu görmek için profilin tamamını görüntüle.

Aşağıdaki girdi sağlanacaktır:

  • 1. satır: Oyuncunun kullanıcı adı

DisplayProfile yöntemin tam olarak şu biçimde bir dize döndürmelidir:

Username: [Username]
Level: [Level]
Score: [Score]
Premium: [IsPremium]
Guild: [GuildName]

Örneğin, kullanıcı adı ShadowKnight ise çıktın, kullanıcı adını ve başlatılmamış alanların tüm sıfır değerlerini göstermelidir:

Username: ShadowKnight
Level: 0
Score: 0
Premium: false
Guild: 

Guild alanının iki nokta üst üste işaretinden sonra hiçbir şey göstermediğine dikkat et: bu, boş dize sıfır değeridir. Bu görev, açık bir değer sağlamadığında Go'nun her türe tam olarak ne atadığını görmene yardımcı olur.

Kendin dene

package main

import (
	"fmt"
)

func main() {
	// Girdiden kullanıcı adını oku
	var username string
	fmt.Scanln(&username)

	// TODO: Kısmi başlatma kullanarak bir Player oluştur
	// Yalnızca Username alanını ayarla, diğer alanların sıfır değerleri kullanmasına izin ver

	// TODO: DisplayProfile metodunu kullanarak oyuncunun profilini görüntüle
}
quiz iconKendini test et

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

Kendi başına pratik yap: Online Go derleyicisi