在尝试执行类型断言时,您试图将特定类型传递到函数中。具体来说,您的目标是实现一个函数声明,使您能够断言地匹配所提供的类型,如下面的假设函数所示:
// 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 }
要在 myfunction 中成功实现类型断言,您应该修改该函数接受 mytype 的 interface{} 参数的声明。以下是实现此目的的方法:
func myfunction(v interface{}, mytype interface{}) bool { return reflect.TypeOf(v) == reflect.TypeOf(mytype) }
此方法利用 Reflect 包将 v 参数的类型与提供的 mytype 接口进行比较。它返回一个布尔值,指示类型是否匹配。
这是一个演示如何使用此函数的示例:
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) }
在此示例中,myfunction 正确确定是否提供的值与指定的类型匹配并相应地返回布尔值。
以上是如何在 Go 中使用函数参数进行类型断言?的详细内容。更多信息请关注PHP中文网其他相关文章!