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!