在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 外掛程式及其應用程式之間共用自訂資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!