plugin paketi
- Go kursu
- İleri seviye
- Ders 19/68
- 4 dk
plugin paketinin temelini ve sınırlarını öğrenirsin.
plugin paketi
plugin paketi, ayrı derlenmiş Go kodunu (.so dosyası) çalışma anında yükleyip içindeki fonksiyon ve değişkenleri kullanmanı sağlar. Ana programı yeniden derlemeden yeni özellik eklemenin bir yoludur.
p, err := plugin.Open("selam.so")
sym, err := p.Lookup("Selam")Yalnızca Linux, FreeBSD ve macOS'ta çalışır; Windows desteklenmez.
Sınırlamalar
Plugin ile ana program aynı Go sürümü ve aynı bağımlılık sürümleriyle derlenmelidir; aksi halde yükleme hata verir. Yüklenen plugin bir daha kaldırılamaz. Bu yüzden birçok proje plugin yerine ayrı süreçlerle konuşan sistemleri (ör. HashiCorp go-plugin, gRPC) tercih eder.
Uygulama Plugin yükle
plugin.Open("selam.so") çağır. Hata varsa fmt.Println("yüklenemedi") yazdır ve çık; yoksa fmt.Println("yüklendi") yazdır. (Bu ortamda dosya olmadığı için çıktı yüklenemedi olur.)
Başlangıç kodu
package main
import (
"fmt"
"plugin"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"fmt"
"plugin"
)
func main() {
_, err := plugin.Open("selam.so")
if err != nil {
fmt.Println("yüklenemedi")
return
}
fmt.Println("yüklendi")
}Beklenen çıktı
yüklenemedi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 plugin paketi hangi sistemde <strong>çalışmaz</strong>?
- macOS
- FreeBSD
- Windows Doğru cevap
- Linux
Açıklama: Go plugin desteği yalnızca Linux, FreeBSD ve macOS içindir; Windows'ta plugin.Open hata döner.
2 Plugin aç
p, err := plugin.____("eklenti.so")
p, err := plugin.Open("eklenti.so")
Açıklama: plugin.Open .so dosyasını yükler ve *plugin.Plugin döndürür.
3 plugin kavramları
| Kavram | Anlamı |
|---|---|
.so dosyası |
Derlenmiş plugin |
plugin.Open |
Yükleme |
Lookup |
Sembol arama |
Aynı Go sürümü |
Uyumluluk şartı |