Sobes.tech
Junior

Go'da hangi veri türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde dört veri tipi kategorisi vardır:

  1. Temel tipler (Basic types) - derleyici tarafından önceden tanımlanmış.

    • Booleanler: bool
    • Sayısal:
      • Tam sayılar: int, int8, int16, int32, int64, uint, uint8 (byte), uint16, uint32, uint64, uintptr
      • Ondalıklı sayılar: float32, float64
      • Karmaşık sayılar: complex64, complex128
    • Dizgiler: string
  2. Bileşik tipler (Aggregate types) - sabit boyutlu koleksiyonlar.

    • Diziler: [n]T (burada n boyut, T ise eleman tipi)
    • Yapılar: struct {} (farklı tiplerde isimlendirilmiş alanlar koleksiyonu)
  3. Referans tipleri (Reference types) - referans tipleri, referansla geçirilir, temel verilere işaretçi tutar.

    • Dilimler: []T (dinamik dizi, diziden oluşturulmuş)
    • Haritalar (Map): map[K]V (anahtar-değer çiftleri koleksiyonu)
    • İşaretçiler: *T (bir değişkenin adresini tutar)
    • Kanallar: chan T, chan<- T, <-chan T (goroutine'ler arasında senkronizasyon ve iletişim için)
    • Fonksiyonlar: func(...) (...) (işaretçi fonksiyonun imzası)
  4. Arayüz tipleri (Interface types) - metod imzaları kümesini tanımlar, veri tipleri tarafından uygulanır.

    • Arayüzler: interface{} (boş arayüz), interface{ methodName(...) ... }

Örnekler:

// Temel tipler
var isTrue bool = true
var age int = 30
var price float64 = 19.99
var name string = "Go Gopher"

// Bileşik tipler
var numbers [5]int = [5]int{1, 2, 3, 4, 5} // Dizi
type Person struct { // Yapı
    Name string
    Age  int
}
var p Person = Person{Name: "Alice", Age: 25}

// Referans tipleri
var slice []int = []int{1, 2, 3}           // Dizi
var grades map[string]int = map[string]int{"Alice": 90, "Bob": 85} // Harita
var ptr *int = &age                     // İşaretçi
var dataChan chan int = make(chan int)  // Kanal
var myFunc func(int) int = func(x int) int { return x * 2 } // Fonksiyon

// Arayüz tipleri
var i interface{} = "anything" // Boş arayüz
type Shape interface { // Arayüz
    Area() float64
}