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>
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>
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>
Menjalankan ini mempamerkan penegasan jenis yang berjaya dan mendapatkan semula data:
&{Name:Bob Age:21}
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!