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: 22tax değişkeni yalnızca calculateTotal fonksiyonu içinde mevcuttur ve main içerisinden erişilemez.
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)
}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 Tekrarlama2Değ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