Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah anda boleh melakukan Type Assertion dalam Go dengan menghantar jenis kepada fungsi?

Bagaimanakah anda boleh melakukan Type Assertion dalam Go dengan menghantar jenis kepada fungsi?

Susan Sarandon
Susan Sarandonasal
2024-10-30 19:57:30664semak imbas

How can you perform Type Assertion in Go by passing in a type to a function?

Taip Penegasan dengan Menghantar Jenis kepada Fungsi

Dalam Go, penegasan taip melibatkan pengesahan sama ada nilai antara muka melaksanakan jenis tertentu. Untuk mencapai ini melalui fungsi, anda boleh menggunakan pakej reflect dan menyediakan sampel jenis data yang dijangkakan.

Pengisytiharan Fungsi

Pengisytiharan fungsi yang anda patut gunakan ialah :

<code class="go">func myfunction(v interface{}, mytype interface{}) bool</code>

Di mana:

  • v ialah pembolehubah yang memegang nilai yang anda mahu semak.
  • mytype ialah sampel jenis data yang dijangkakan.

Penggunaan

Dalam fungsi utama, anda boleh memanggil myfunction seperti ini:

<code class="go">assertMatch := myfunction("hello world", "stringSample")</code>

Di sini, "stringSample" ialah sampel daripada jenis rentetan. Jika nilai v ialah rentetan, fungsi akan kembali benar. Jika tidak, ia akan kembali palsu.

Contoh

Berikut ialah contoh:

<code class="go">package main

import (
    "fmt"
    "reflect"
)

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}

func main() {

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

    fmt.Printf("%+v\n", assertNoMatch)

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

    fmt.Printf("%+v\n", assertMatch)

}</code>

Output:

false
true

Atas ialah kandungan terperinci Bagaimanakah anda boleh melakukan Type Assertion dalam Go dengan menghantar jenis kepada fungsi?. 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