Heim >Backend-Entwicklung >Golang >Wie kann ich benutzerdefinierte Datentypen zwischen einem Go-Plugin und seiner Anwendung teilen?

Wie kann ich benutzerdefinierte Datentypen zwischen einem Go-Plugin und seiner Anwendung teilen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 08:40:29940Durchsuche

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

Benutzerdefinierte Datentypen zwischen einem Go-Plugin und einer Anwendung teilen

In Go-Plugins ist es möglich, benutzerdefinierte Datentypen zwischen dem Plugin und der Anwendung zu teilen, jedoch nicht durch direkte Typzusicherung.

Gemeinsam genutzte Datentypen in separaten Paketen

Um gemeinsam genutzte Typen zu definieren, erstellen Sie sie in einem separaten Paket und importieren Sie es sowohl in das Plugin als auch in die Hauptanwendung. Zum Beispiel:

Shared Type Package:

<code class="go">package shared

type Person struct {
    Name string
}</code>

Plugin-Code:

<code class="go">package main

import (
    "shared"
)

var P = shared.Person{Name: "Emma"}</code>

Main Anwendungscode:

<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>

Nicht-Zeigertypen und Zeigersymbole

Wenn Sie in einem Plugin nach Variablensymbolen suchen, ist das Ergebnis ein Zeiger auf die Variable, auch wenn es sich um eine handelt Nicht-Zeiger-Typ. Dies ermöglicht die Änderung des Variablenwerts über das Plugin.

Fazit

Durch die Verwendung gemeinsamer Typen, die in einem separaten Paket definiert sind, ist es möglich, benutzerdefinierte Datentypen zwischen einem Go-Plugin und einer Anwendung zu übergeben und so dies zu ermöglichen Effizienter Datenaustausch und Erweiterung der Plugin-Funktionen.

Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Datentypen zwischen einem Go-Plugin und seiner Anwendung teilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn