CodeBlanks Logo Icon CodeBlanks

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

main.go
package main

import (
    "fmt"
    "plugin"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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ç

Soru
p, err := plugin.____("eklenti.so")
Cevap
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ı

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