Rumah > pembangunan bahagian belakang > Golang > Bolehkah Anda Mengelakkan Jenis Penegasan dalam Go?

Bolehkah Anda Mengelakkan Jenis Penegasan dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-14 21:06:02
asal
485 orang telah melayarinya

Can You Avoid Type Assertion in Go?

Cara Mengelakkan Jenis Penegasan dalam Go

Dalam Go, adalah perkara biasa untuk bekerja dengan antara muka untuk mengendalikan jenis dengan gelagat dikongsi. Walau bagaimanapun, kerap menyemak jenis nilai antara muka menggunakan penegasan jenis boleh menjadi membosankan. Ini menimbulkan persoalan:

Adakah Mungkin untuk Mencipta Pembolehubah dengan Jenis Yang Diperlukan Daripada Penegasan Jenis?

Sebagai contoh, pertimbangkan fungsi yang mengambil antara muka:

func method(data interface{})
Salin selepas log masuk

Untuk mengakses medan atau kaedah jenis konkrit, seseorang biasanya menggunakan penegasan jenis:

switch data.(type) {
case *Struct1:
    a := data.(*Struct1)
    // ...
case *Struct2:
    a := data.(*Struct2)
    // ...
}
Salin selepas log masuk

Walau bagaimanapun, sistem penaipan statik Go menghalang penciptaan pembolehubah dengan jenis tertentu pada masa jalan.

Penyelesaian Alternatif

Fungsi Abstrak:

Daripada bergantung pada penegasan jenis, buat antara muka yang mentakrifkan fungsi yang diperlukan. Kemudian, minta jenis konkrit melaksanakan antara muka ini. Tetapkan nilai antara muka kepada pembolehubah jenis ini, menghapuskan keperluan untuk penegasan jenis.

Menggunakan Refleksi:

Dalam kes di mana abstraksi tidak boleh dilakukan, refleksi boleh digunakan untuk mengakses medan biasa dengan nama mereka. Walaupun penyelesaian ini membenarkan pengendalian jenis dinamik, ia tidak mempunyai jaminan masa penyusunan dan mungkin mempunyai implikasi prestasi.

Atas ialah kandungan terperinci Bolehkah Anda Mengelakkan Jenis Penegasan dalam 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