CodeBlanks Logo Icon CodeBlanks

reflect paketi

reflect paketinin temelini öğrenirsin.

reflect paketi

reflect paketi, bir değerin türünü ve içeriğini çalışma zamanında incelemeni sağlar. Derleme anında türünü bilmediğin bir any değerinin aslında ne olduğunu sorabilirsin.

var x any = 3.14
fmt.Println(reflect.TypeOf(x))  // float64

encoding/json ve fmt gibi paketler struct alanlarını bu şekilde okur.

Bedeli: hız ve tür güvenliği

Reflection güçlüdür ama iki bedeli vardır: normal koddan daha yavaştır ve hatalar derleme yerine çalışma anında panic olarak çıkar. Bu yüzden önce arayüzler ve generic'ler denenir; reflect, gerçekten genel bir araç (serileştirici, ORM, doğrulayıcı) yazarken kullanılır.

Uygulama Türü yazdır

var x any = 42 tanımla ve reflect.TypeOf(x) sonucunu fmt.Println ile yazdır.

Başlangıç kodu

main.go
package main

import (
    "fmt"
    "reflect"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import (
    "fmt"
    "reflect"
)

func main() {
    var x any = 42
    fmt.Println(reflect.TypeOf(x))
}

Beklenen çıktı

int

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 reflect paketi en çok ne zaman gerekir?

  • Dosya okumak için
  • Türü derleme anında bilinmeyen değerleri incelerken Doğru cevap
  • Döngüleri hızlandırmak için
  • Goroutine başlatmak için

Açıklama: reflect, any olarak gelen değerin gerçek türünü ve alanlarını çalışma zamanında okur; JSON kodlayıcılar bunu kullanır.

2 Türü sorgula

Soru
var x any = "Go"
fmt.Println(reflect.____(x))
Cevap
var x any = "Go"
fmt.Println(reflect.TypeOf(x))

Açıklama: reflect.TypeOf bir değerin türünü (string) döndürür.

3 reflect kavramları

Kavram Anlamı
reflect.TypeOf Türü verir
reflect.ValueOf Değeri sarmalar
any Her türü taşıyabilir
panic Hatalı reflect kullanımında oluşur

İleri seviye bölümündeki tüm dersler