CodeBlanks Logo Icon CodeBlanks

Plugin sembolü

  • Go kursu
  • İleri seviye
  • Ders 22/68
  • 4 dk

Lookup ile dışa aktarılan sembolü almayı öğrenirsin.

Sembolü kullanmak

Lookup sonucu bir plugin.Symbol'dır. Fonksiyonsa fonksiyon türüne, değişkense o türün işaretçisine tür iddiası yaparsın:

selam := sym.(func(string) string)
fmt.Println(selam("Ada"))

surum := vsym.(*string)  // değişken için işaretçi
fmt.Println(*surum)

Arayüzle sözleşme

Daha düzenli bir yöntem: plugin bir arayüzü karşılayan değer dışa aktarır, ana program da o arayüze iddia eder. Arayüz ortak bir pakette tanımlanır:

type Komut interface { Calistir() string }

k := sym.(Komut)
fmt.Println(k.Calistir())

Uygulama Tür iddiası

Plugin sembolünü taklit eden var sym any = func(n int) int { return n + 1 } tanımla. sym.(func(int) int) ile fonksiyona çevir ve f(9) 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"

func main() {
    var sym any = func(n int) int { return n + 1 }
    f := sym.(func(int) int)
    fmt.Println(f(9))
}

Beklenen çıktı

10

Soru ve cevaplar

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

1 Plugin'de <code>var Surum = "1.0"</code> varsa Lookup sonucu hangi türe iddia edilir?

  • string
  • func() string
  • []byte
  • *string Doğru cevap

Açıklama: Değişken sembolleri işaretçi olarak döner; böylece ana program değişkeni okuyup değiştirebilir.

2 Fonksiyona çevir

Soru
f := sym.(____)
fmt.Println(f(3))
Cevap
f := sym.(func(int) int)
fmt.Println(f(3))

Açıklama: Fonksiyon sembolü kendi imzasıyla tür iddiasına çevrilir.

3 Sembol ve iddia

Kavram Anlamı
func Selam(string) string func(string) string
var Surum string *string
var Sayac int *int
var Eklenti Komut Komut arayüzü

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