在Go 外掛程式中,可以在外掛程式和應用程式之間共用自訂資料類型,但不能透過直接型別斷言。
要定義共享類型,請在單獨的套件中建立它們並將其匯入插件和主應用程式中。例如:
共享型別套件:
<code class="go">package shared type Person struct { Name string }</code>
外掛程式碼:
<code class="go">package main import ( "shared" ) var P = shared.Person{Name: "Emma"}</code>
<code class="go">package main import ( "fmt" "plugin" "shared" "os" ) func main() { plug, err := plugin.Open("./plugin.so") if err != nil { fmt.Println(err) os.Exit(1) } // Lookup shared type symbol sym, err := plug.Lookup("P") if err != nil { fmt.Println(err) os.Exit(1) } // Type-assert symbol into shared type var p shared.Person p, ok := sym.(shared.Person) if !ok { fmt.Println("Wrong symbol type") os.Exit(1) } // Use shared type as expected fmt.Println(p.Name) }</code>非指標類型和指標符號從外掛程式中尋找變數符號時,結果是指向變數的指針,即使它是一個非指標類型。這允許從插件修改變數的值。 結論透過使用在單獨的套件中定義的共享類型,可以在Go 插件和應用程式之間傳遞自訂資料類型,從而使高效的資料交換並擴展插件的功能。
以上是如何在 Go 外掛程式及其應用程式之間共用自訂資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!