CodeBlanks Logo Icon CodeBlanks

Tür tanımları

type anahtar kelimesiyle yeni türler tanımlamayı öğrenirsin.

Tür tanımları

type anahtar kelimesiyle var olan bir türden yeni, adlandırılmış bir tür oluşturulur. Yeni tür aynı veriyi taşır ama derleyici onu ayrı bir tür kabul eder:

type Celsius float64
type Fahrenheit float64

var c Celsius = 25
var f Fahrenheit = 77
// c + f  → derleme hatası: farklı türler

Bu sayede yanlış birimlerin karışması derleme anında yakalanır.

Yöntem eklemek ve takma ad

Kendi türüne yöntem ekleyebilirsin; bu, tür tanımlarının asıl gücüdür:

func (c Celsius) Fahrenheit() Fahrenheit {
    return Fahrenheit(c*9/5 + 32)
}
fmt.Println(Celsius(100).Fahrenheit())  // 212

type Ad = string (eşittir işaretiyle) ise yeni tür değil, yalnızca takma addır; byte ve rune bu şekilde tanımlanmıştır.

Uygulama Sıcaklık türü

type Celsius float64 ve type Fahrenheit float64 tanımla. func (c Celsius) Fahrenheit() Fahrenheit yöntemiyle c*9/5 + 32 hesapla ve Celsius(25).Fahrenheit() sonucunu yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

type Celsius float64
type Fahrenheit float64

func (c Celsius) Fahrenheit() Fahrenheit {
    return Fahrenheit(c*9/5 + 32)
}

func main() {
    fmt.Println(Celsius(25).Fahrenheit())
}

Beklenen çıktı

77

Soru ve cevaplar

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

1 <code>type Yas int</code> tanımından sonra <code>var y Yas = 5; var n int = y</code> neden derlenmez?

  • Yas ile int farklı türlerdir; int(y) gerekir Doğru cevap
  • 5 bir Yas olamaz
  • Yas sayı değildir
  • Derlenir

Açıklama: Adlandırılmış türler arasında örtük atama yoktur; alttaki tür aynı olsa da açık dönüşüm yazılır.

2 Yeni tür

Soru
____ Metre float64
var uzunluk Metre = 3.5
Cevap
type Metre float64
var uzunluk Metre = 3.5

Açıklama: type anahtar kelimesi yeni, adlandırılmış bir tür tanımlar.

3 Tanım ve anlamı

Kavram Anlamı
type Celsius float64 Yeni tür
type Ad = string Takma ad
Celsius(25) Dönüşüm
func (c Celsius) Yöntem

Başlangıç bölümündeki tüm dersler