Menu
Coddy logo textTech

Fonksiyon Kapsamı Temelleri

Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası — ders 58 / 109.

Go'da, bir fonksiyon içinde bildirilen değişkenler yalnızca o fonksiyon içinden erişilebilirdir. Buna fonksiyon kapsamı (function scope) denir.

Yerel bir değişken içeren bir fonksiyon oluşturun:

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // yerel değişken
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Hata: tax değişkenine buradan erişilemez
}

Çıktı yalnızca döndürülen değeri gösterir:

Total: 22

tax değişkeni yalnızca calculateTotal fonksiyonu içinde mevcuttur ve main içerisinden erişilemez.

challenge icon

Görev

Başlangıç

Bu meydan okumada, Go'da fonksiyon kapsamını anlamaya yönelik pratik yapacaksınız. Kapsam sorunu olan basit bir programı düzeltmeniz gerekiyor.

Programın global bir message değişkeni ve onu değiştirmeye çalışan bir fonksiyonu var. Göreviniz, fonksiyonun global değişkeni düzgün bir şekilde güncellemesini sağlayacak şekilde kodu düzeltmektir.

Kopya kağıdı

Bir fonksiyon içinde tanımlanan değişkenlere yalnızca o fonksiyon içinden erişilebilir (fonksiyon kapsamı):

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // yerel değişken
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Hata: tax değişkenine buradan erişilemez
}

Yerel değişkenler yalnızca kendi fonksiyonları içinde mevcuttur ve dışarıdan erişilemezler.

Kendin dene

package main

import "fmt"

// Global değişken
var message string = "Hello from global scope"

func updateMessage() {
    // Bu, global olanı değiştirmek yerine yeni bir yerel değişken oluşturur
    message := "Hello from function scope"
    fmt.Println("Inside function:", message)
}

func main() {
    fmt.Println("Before function call:", message)
    updateMessage()
    
    // YAPILACAK: Global mesaj hala orijinal değerinde
    // Global değişkeni değiştirmek için updateMessage() fonksiyonunu düzenleyin
    fmt.Println("After function call:", message)
}
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