Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melaksanakan Penegasan Jenis dengan Pembolehubah Jenis Fungsi dalam Go?

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

DDD
DDDasal
2024-11-02 18:04:28868semak imbas

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)
}

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)
}

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

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!

Kenyataan:
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