Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan pemalam dalam golang
Dengan pengembangan berterusan skala sistem perisian komputer, skalabiliti program telah menjadi tumpuan kebanyakan syarikat dan pasukan. Cara biasa untuk mencapai kebolehskalaan adalah melalui seni bina boleh pasang. Mekanisme pemalam membenarkan fungsi program dikembangkan pada bila-bila masa tanpa mengubah suai kod program secara langsung. Berbanding dengan seni bina modular tradisional, seni bina plug-in adalah lebih fleksibel, sangat padat dan boleh diurus. Artikel ini memperkenalkan cara mereka bentuk dan melaksanakan mekanisme pemalam dalam bahasa golang.
Pemalam merujuk kepada komponen yang boleh dimuatkan secara dinamik dan memanjangkan kefungsian program. Pemalam biasanya bebas daripada program utama dan boleh dimuatkan atau dipunggah semasa program utama sedang berjalan. Pemalam biasanya mengandungi satu atau lebih antara muka yang melaluinya ia berkomunikasi dengan program utama.
Dalam seni bina pemalam, program utama bertanggungjawab untuk memuatkan atau memunggah pemalam, berkomunikasi dengan pemalam dan menyelaraskan kerjasama antara pemalam. Pemalam bertanggungjawab untuk melaksanakan fungsi yang mereka sediakan dan mendedahkannya kepada program utama untuk panggilan melalui antara muka yang telah ditetapkan.
Dalam golang, anda boleh menggunakan perpustakaan pautan dinamik (Pustaka Pautan Dinamik) untuk mencapai pemalam Langkah-langkah khusus adalah seperti berikut:
Di bawah ini kami akan melaksanakan langkah demi langkah di atas.
Kita perlu menentukan perkara yang perlu dilakukan oleh pemalam yang ingin kita laksanakan dan antara muka yang disediakannya. Mengambil program kalkulator mudah sebagai contoh, kami mentakrifkan antara muka pemalam seperti berikut:
package plugin type CalculatorPlugin interface { GetName() string Add(int, int) int Sub(int, int) int }
Kami menganggap terdapat dua palam- ins: AddPlugin dan SubPlugin. Mereka semua melaksanakan antara muka CalculatorPlugin.
AddPlugin melaksanakan dua kaedah: GetName() dan Add().
package main import ( "github.com/bwmarrin/discordgo" "github.com/derry6/DSGO_BOT/plugin" ) type AddPlugin struct { } func (ap *AddPlugin) GetName() string { return "加法插件" } func (ap *AddPlugin) Add(a, b int) int { return a + b } func New() plugin.CalculatorPlugin { return &AddPlugin{} } func main() {}
SubPlugin melaksanakan dua kaedah: GetName() dan Sub().
package main import ( "github.com/bwmarrin/discordgo" "github.com/derry6/DSGO_BOT/plugin" ) type SubPlugin struct { } func (sp *SubPlugin) GetName() string { return "减法插件" } func (sp *SubPlugin) Sub(a, b int) int { return a - b } func New() plugin.CalculatorPlugin { return &SubPlugin{} } func main() {}
Apa yang perlu diperhatikan dalam kod ialah fungsi New(), yang mengembalikan nilai jenis antara muka CalculatorPlugin Program utama akan menggunakan fungsi ini untuk memuatkan pemalam secara dinamik.
Gunakan arahan go build untuk menyusun pemalam dan menjana perpustakaan pautan dinamik.
go build -buildmode=plugin -o add.so add.go go build -buildmode=plugin -o sub.so sub.go
Atur cara utama bertanggungjawab untuk memuatkan pemalam Kita perlu menentukan fungsi untuk memuatkan pemalam mengikut laluan di mana ia berada.
func LoadPlugin(path string) (p plugin.CalculatorPlugin, err error) { plugin, err := plugin.Open(path) if err != nil { return nil, err } symbol, err := plugin.Lookup("New") if err != nil { return nil, err } return symbol.(func() plugin.CalculatorPlugin)(), nil }
Selepas program utama memuatkan pemalam, kita boleh mendapatkan nama pemalam dan melakukan penambahan dan penolakan operasi melalui kaedah yang disediakan oleh pemalam. Berikut ialah contoh kod:
package main import ( "fmt" "github.com/derry6/DSGO_BOT/plugin" ) func main() { addPlugin, _ := LoadPlugin("./add.so") subPlugin, _ := LoadPlugin("./sub.so") fmt.Println("插件名称: ", addPlugin.GetName()) fmt.Println("3 + 2 = ", addPlugin.Add(3, 2)) fmt.Println("插件名称: ", subPlugin.GetName()) fmt.Println("3 - 2 = ", subPlugin.Sub(3, 2)) }
Pemasukan dalam golang dicapai melalui perpustakaan pautan dinamik Dengan mekanisme pemalam, kod itu boleh kebolehskalaan dan kebolehselenggaraan yang sangat baik. Apabila kita perlu menambah fungsi baharu, kita hanya perlu menulis pemalam yang sepadan dan bukannya mengubah suai kod asal program. Idea reka bentuk seni bina plug-in dan pelaksanaan pemalam yang disusun golang boleh membolehkan kami mereka bentuk dan membangunkan kejuruteraan perisian dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemalam dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!