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 중국어 웹사이트의 기타 관련 기사를 참조하세요!