Membina dan Menghubungkan Secara Dinamik daripada Go Binary
Pertimbangkan situasi di mana anda mempunyai binari Go sedia ada dan perlu memasukkan kod luaran ke dalamnya secara dinamik. Ini boleh dicapai dengan menyusun fail Go luaran dan memautkannya ke binari sedia ada.
Menyusun Fail Go Luaran
Once Go 1.5 dikeluarkan pada Ogos 2015, sokongan untuk perpustakaan kongsi akan diperkenalkan. Menggunakan bendera -buildmode=shared, anda boleh membina fail Go luaran sebagai pustaka kongsi:
go install -buildmode=shared external.go
Memautkan Kod Disusun
Untuk memautkan pustaka kongsi yang disusun ke binari sedia ada, gunakan bendera -linkshared semasa proses binaan:
go build -linkshared main.go
Contoh Penggunaan
Dalam contoh yang diberikan, binari utama akan mengandungi kod berikut:
func main() { // Compile external package containing runFoo() pkg, err := build.Import("github.com/example/external", "", build.ImportModeShared) if err != nil { // Handle error } // Get runFoo function from compiled package runFoo := reflect.ValueOf(pkg.Func("runFoo")) // Call the compiled runFoo function runFoo.Call(nil) // Continue execution normally }
Pendekatan ini membolehkan anda menggabungkan fungsi baharu secara dinamik ke dalam binari Go sedia ada tanpa membina semula keseluruhan program.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memautkan Kod External Go secara Dinamik kepada Perduaan Go Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!