Bagaimana untuk Melaksanakan Penegasan Jenis dengan Parameter Fungsi dalam Go?

Patricia Arquette
Lepaskan: 2024-11-02 00:18:02
asal
597 orang telah melayarinya

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
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)

}
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!