首頁  >  文章  >  後端開發  >  如何在 Go 外掛程式及其應用程式之間共用自訂資料類型?

如何在 Go 外掛程式及其應用程式之間共用自訂資料類型?

Patricia Arquette
Patricia Arquette原創
2024-10-25 08:40:29815瀏覽

How Can I Share Custom Data Types Between a Go Plugin and Its Application?

在Go 外掛程式和應用程式之間共用自訂資料類型

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn