0Pricing
Go Academy · Pelajaran

Dasar-Dasar Paket Plugin Go

Membangun file .so dan plugin.Open / Lookup

Dasar-Dasar Paket Plugin Go adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Apa itu paket pengaya Go?

Paket plugin (Go 1.8+) memungkinkan pemuatan pustaka bersama .so yang telah dikompilasi saat program berjalan dan pemanggilan fungsi serta variabel yang diekspor darinya.

Membangun pengaya

Kompilasikan berkas Go sebagai pengaya dengan -buildmode=plugin:

// greeter/greeter.go
package main
func Greet(name string) string { return "Hello, " + name }

Memuat pengaya

Muat berkas .so dan cari simbol yang diekspor:

p, err := plugin.Open("./greeter.so")
if err != nil { log.Fatal(err) }

sym, err := p.Lookup("Greet")
if err != nil { log.Fatal(err) }

greet, ok := sym.(func(string) string)
if !ok { log.Fatal("wrong type") }
fmt.Println(greet("World"))

Batasan pengaya

Semua paket yang diimpor oleh pengaya dan program utama harus memiliki versi yang identik. Pengaya harus menggunakan package main. Pengaya tidak dapat dibongkar setelah dimuat.

Tipe simbol

plugin.Lookup mengembalikan tipe apa pun. Lakukan pemeriksaan tipe ke tanda tangan fungsi atau tipe variabel yang diharapkan. Ketidakcocokan menyebabkan kepanikan saat program berjalan.

Keterbatasan platform

Paket pengaya berfungsi di Linux dan macOS, tetapi tidak di Windows atau dengan CGO_ENABLED=0. Paket ini juga tidak mendukung kompilasi lintas platform ke target pengaya.

Kompatibilitas versi

Pengaya dan program utama harus dikompilasi dengan versi Go yang sama serta versi yang sama untuk semua paket bersama. Ketidakcocokan versi menyebabkan pengaya gagal dimuat.

Kasus penggunaan

Pengaya cocok untuk: sistem manajemen konten dengan penangan yang disediakan pengguna, basis data dengan backend penyimpanan yang dapat diganti, serta aplikasi yang memerlukan ekstensi yang dapat dimuat saat program berjalan tanpa mengompilasi ulang program utama.

Alternatif

Untuk fleksibilitas yang lebih besar, gunakan pengaya berbasis RPC (HashiCorp go-plugin), modul WebAssembly, atau bahasa skrip (Lua, Starlark) yang ditanamkan dalam program utama sebagai pengganti pengaya asli.

Menelusuri kesalahan pengaya

Simbol pengaya tidak ditemukan? Periksa: package main yang benar, simbol yang diekspor (diawali huruf kapital), tag build dan versi modul yang sesuai, serta platform yang benar.

Pemuatan pengaya hanya berlangsung satu arah

Setelah pengaya dimuat, pengaya tersebut tidak dapat dibongkar. Rancang sistem agar dapat menangani semua pengaya yang telah dimuat tetap aktif sepanjang masa hidup proses.

Pemeriksaan Singkat

Apa batasan utama paket pengaya Go dibandingkan dengan HashiCorp go-plugin?

Rangkuman: Paket Pengaya Go

Poin utama:

  • Bangun dengan -buildmode=plugin; muat dengan plugin.Open
  • plugin.Lookup mengembalikan tipe apa pun; lakukan pemeriksaan tipe ke tipe yang diharapkan
  • Hanya Linux/macOS; versi identik diperlukan; tidak ada pembongkaran
  • Utamakan go-plugin (berbasis RPC) untuk fleksibilitas lintas platform

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar Paket Plugin Go” gratis?

Ya — teks lengkap “Dasar-Dasar Paket Plugin Go” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Dasar-Dasar Paket Plugin Go”?

Membangun file .so dan plugin.Open / Lookup Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Dasar-Dasar Paket Plugin Go” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar Paket Plugin Go
  2. Mendesain Interface Plugin
  3. Pemuatan Dinamis dan Simbol
  4. Alternatif: HashiCorp go-plugin
← Kembali ke Go Academy