Rumah > pembangunan bahagian belakang > Golang > ## Bolehkah Anda Menaip Tegaskan Jenis Data Tersuai Daripada Pemalam Go?

## Bolehkah Anda Menaip Tegaskan Jenis Data Tersuai Daripada Pemalam Go?

Patricia Arquette
Lepaskan: 2024-10-26 18:48:03
asal
922 orang telah melayarinya

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

Bolehkah Anda Berkongsi Jenis Data Tersuai Antara Pemalam dan Aplikasi Go?

Dalam pembangunan pemalam Go, seseorang boleh mencari antara muka dengan jenis data tersuai yang ditakrifkan dalam pemalam dari aplikasi utama. Walaupun boleh dilakukan untuk mendapatkan semula simbol yang dieksport dan mewakilinya sebagai antara muka, persoalan timbul: bolehkah kita menaip menegaskannya ke dalam struct tersuai?

Jawapan langsung adalah negatif, kerana pakej utama tidak boleh mengakses pengecam yang ditakrifkan dalam pakej lain. Oleh itu, pengecam yang dieksport dalam pemalam tidak boleh berkongsi jenis yang sama dengan aplikasi. Walaupun dengan takrifan jenis Orang yang sama dalam kedua-dua pemalam dan aplikasi, penegasan jenis gagal disebabkan perbezaan yang wujud.

Tetapi, ada penyelesaiannya. Menentukan jenis dalam pakej berasingan membolehkan penggunaannya dalam kedua-dua pemalam dan aplikasi. Ini membolehkan penegasan jenis struct tersuai.

Berikut ialah contoh:

Takrif jenis tersuai:

<code class="go">package filter

type Filter struct {
    Name string
    Age  int
}</code>
Salin selepas log masuk

Kod pemalam:

<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>
Salin selepas log masuk

Aplikasi utama:

<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>
Salin selepas log masuk

Menjalankan ini mempamerkan penegasan jenis yang berjaya dan mendapatkan semula data:

&{Name:Bob Age:21}
Salin selepas log masuk

Adalah penting untuk diperhatikan perbezaan jenis antara pengecam yang dieksport dalam pemalam (jenis pembolehubah untuk Penapis Saya, jenis fungsi untuk CreateFilter) dan jenis simbol yang diperoleh apabila dilihat daripada pemalam (jenis penunjuk untuk pembolehubah, jenis yang sama untuk fungsi).

Dengan menggunakan pendekatan ini, pembangun boleh berkongsi jenis data tersuai antara pemalam dan aplikasi Go, memudahkan komunikasi antara komponen yang cekap.

Atas ialah kandungan terperinci ## Bolehkah Anda Menaip Tegaskan Jenis Data Tersuai Daripada Pemalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan