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

Bagaimana untuk Melaksanakan Penegasan Jenis dengan Parameter Fungsi dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 00:18:02597semak imbas

How to Perform Type Assertion with Function Parameters in Go?

Taip Penegasan melalui Parameter Fungsi

Dalam percubaan untuk melakukan penegasan jenis, anda berusaha untuk menghantar jenis tertentu ke dalam fungsi. Khususnya, anda menyasarkan untuk mencapai pengisytiharan fungsi yang membolehkan anda memadankan secara tegas dengan jenis yang disediakan, seperti yang digambarkan dalam fungsi hipotetikal di bawah:

// Note: Type isn't a valid type to use in Go
func myfunction(mystring string, mytype Type) {
    ...

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

    ...  // Do other stuff
}

Untuk berjaya melaksanakan penegasan jenis dalam myfunction, anda harus mengubah suai fungsi pengisytiharan untuk menerima parameter antara muka{} untuk mytype. Begini cara anda boleh mencapai ini:

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

Pendekatan ini menggunakan pakej reflect untuk membandingkan jenis parameter v dengan antara muka mytype yang disediakan. Ia mengembalikan nilai boolean yang menunjukkan sama ada jenis sepadan atau tidak.

Berikut ialah contoh yang menunjukkan cara anda boleh menggunakan fungsi ini:

package main

import (
    "fmt"
    "reflect"
)

func main() {

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

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

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

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

}

Dalam contoh ini, myfunction dengan betul menentukan sama ada nilai yang disediakan sepadan dengan jenis yang ditentukan dan mengembalikan boolean sewajarnya.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penegasan Jenis dengan Parameter 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