Heim >Backend-Entwicklung >Golang >Wie kann ich benutzerdefinierte Datentypen zwischen einem Go-Plugin und seiner Anwendung teilen?
In Go-Plugins ist es möglich, benutzerdefinierte Datentypen zwischen dem Plugin und der Anwendung zu teilen, jedoch nicht durch direkte Typzusicherung.
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>
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.
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!