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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
f := sym.(____)
fmt.Println(f(3))
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ü |