>백엔드 개발 >Golang >Go 플러그인과 해당 애플리케이션 간에 사용자 정의 데이터 유형을 어떻게 공유할 수 있나요?

Go 플러그인과 해당 애플리케이션 간에 사용자 정의 데이터 유형을 어떻게 공유할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 08:40:29940검색

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으로 문의하세요.