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

Patricia Arquette
Freigeben: 2024-10-25 08:40:29
Original
814 Leute haben es durchsucht

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>
Nach dem Login kopieren

Plugin-Code:

<code class="go">package main

import (
    "shared"
)

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!