## Go 플러그인에서 사용자 정의 데이터 유형을 입력할 수 있나요?

Patricia Arquette
풀어 주다: 2024-10-26 18:48:03
원래의
819명이 탐색했습니다.

## Can You Type Assert a Custom Data Type From a Go Plugin?

Go 플러그인과 애플리케이션 간에 사용자 정의 데이터 유형을 공유할 수 있습니까?

Go 플러그인 개발에서 Go 플러그인에 정의된 사용자 정의 데이터 유형과의 인터페이스를 모색할 수 있습니다. 기본 응용 프로그램의 플러그인. 내보낸 기호를 검색하여 인터페이스로 표시하는 것이 가능하지만 질문이 생깁니다. 이를 사용자 정의 구조체에 입력할 수 있습니까?

주 패키지는 다른 패키지에 정의된 식별자에 액세스할 수 없기 때문에 직접적인 대답은 부정적입니다. 따라서 플러그인에서 내보낸 식별자는 애플리케이션과 동일한 유형을 공유할 수 없습니다. 플러그인과 애플리케이션 모두에서 동일한 Person 유형 정의를 사용하더라도 고유한 구별로 인해 유형 어설션이 실패합니다.

그러나 해결 방법이 있습니다. 별도의 패키지에 유형을 정의하면 플러그인과 애플리케이션 모두에서 사용할 수 있습니다. 이를 통해 사용자 정의 구조체의 유형 어설션이 가능해집니다.

예는 다음과 같습니다.

사용자 정의 유형 정의:

<code class="go">package filter

type Filter struct {
    Name string
    Age  int
}</code>
로그인 후 복사

플러그인 코드:

<code class="go">package main

import (
    "play/filter"
)

var MyFilter = filter.Filter{
    Name: "Bob",
    Age:  21,
}

func CreateFilter() filter.Filter {
    return filter.Filter{
        Name: "Bob",
        Age:  21,
    }
}</code>
로그인 후 복사

기본 애플리케이션:

<code class="go">package main

import (
    "fmt"
    "log"
    "os"
    "play/filter"
    "plugin"
)

func main() {
    p, err := plugin.Open("plugin.so")
    if err != nil {
        log.Fatal(err)
    }
    mf, err := p.Lookup("MyFilter")
    if err != nil {
        log.Fatal(err)
    }
    f, ok := mf.(*filter.Filter)
    if !ok {
        log.Fatal("Wrong symbol type")
    }

    fmt.Printf("%+v\n", f)
}</code>
로그인 후 복사

이를 실행하면 성공적인 유형 어설션 및 데이터 검색이 표시됩니다.

&{Name:Bob Age:21}
로그인 후 복사

플러그인에서 내보낸 식별자(MyFilter의 변수 유형, CreateFilter의 함수 유형)와 플러그인에서 조회할 때 얻은 기호 유형(변수의 포인터 유형, 함수의 동일한 유형) 간의 유형 차이를 기록하는 것이 중요합니다.

이 접근 방식을 활용하면 개발자는 Go 플러그인과 애플리케이션 간에 사용자 정의 데이터 유형을 공유하여 효율적인 구성 요소 간 통신을 촉진할 수 있습니다.

위 내용은 ## Go 플러그인에서 사용자 정의 데이터 유형을 입력할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!