Bagaimana untuk Melaksanakan Penegasan Jenis dengan Pembolehubah Jenis Fungsi dalam Go?

DDD
Lepaskan: 2024-11-02 18:04:28
asal
948 orang telah melayarinya

How to Perform Type Assertion with Function Type Variables in Go?

Jenis Penegasan dengan Pembolehubah Jenis Fungsi

Soalan ini bertujuan untuk memahami cara melaksanakan penegasan jenis dengan menghantar pembolehubah jenis ke dalam fungsi. Matlamatnya adalah untuk mencapai sesuatu seperti berikut:

// Pseudocode
func myfunction(mystring string, mytype Type) {
    ...

    someInterface := translate(mystring)
    object, ok := someInterface.(mytype)

    ...  // Do other stuff
}

func main() {
    // Desired function call
    myfunction("hello world", map[string]string)
}
Salin selepas log masuk

Pengisytiharan Fungsi yang Betul untuk Penegasan Jenis

Untuk melaksanakan penegasan jenis dalam fungsi yang diberikan, pengisytiharan fungsi yang betul harus menggunakan antara muka{} untuk parameter jenis. Ini kerana antara muka dalam Go boleh menyimpan sebarang nilai jenis. Berikut ialah versi perisytiharan fungsi yang diperbetulkan:

func myfunction(v interface{}, expectedType interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(expectedType)
}
Salin selepas log masuk

Penggunaan dalam Fungsi Utama

Dalam fungsi utama, myfunction boleh dipanggil dengan menghantar sampel nilai jenis yang diingini dan bukannya jenis itu sendiri:

assertNoMatch := myfunction("hello world", map[string]string{})

assertMatch := myfunction("hello world", "stringSample")

fmt.Printf("%+v\n", assertNoMatch)  // false
fmt.Printf("%+v\n", assertMatch)  // true
Salin selepas log masuk

Pendekatan Dijelaskan

Pendekatan menggunakan pakej reflect untuk membandingkan jenis nilai sebenar (v ) dengan nilai sampel jenis yang dijangkakan (expectedType). Ini membolehkan kami melakukan semakan jenis dinamik, sama seperti kami menggunakan pernyataan suis untuk menyemak jenis rentetan saya dan menghantarnya kepada jenis yang diingini secara eksplisit.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penegasan Jenis dengan Pembolehubah Jenis Fungsi 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan