go - Golang 中用于匹配传递的变量和类型的通用函数
问题描述
我想编写一个函数,它接受两个参数interface{}
和一个类型,true
如果接口是传递的类型,则返回,否则返回false
。
我是反思的初学者,我看到的主要挑战是如何将类型作为函数参数。
例如:
func checkType(val interface{}, t <??>){
if reflect.Typeof(val) == t {
return true
}else{
return false
}
}
checkType("hello",<int type>) // returns false
checkType("hello",<string type>) // returns true
我无法在所有<>
部分中填写代码以实现所需的行为。
编辑:得到关于安全类型转换运算符的查询以及我的问题的意图。虽然建议的方法有助于实现类型转换,但问题主要是为了增强关于 Go 反射的学术知识。
解决方案
不需要写这样的函数,它已经是语言的内置特性了:
i := "hello"
_, ok := i.(int) // ok is false
_, ok := i.(string) // ok is true
推荐阅读
- jmeter - 覆盖授权标头
- c++ - 交叉编译找不到某些库
- java - Mockito 简化我的(复杂的)测试
- node.js - Multi Upsert ArangoDB
- unix - 詹金斯作业执行问题
- sql - 存储过程有多个 SELECT 语句
- flutter - 为什么只有部分图标在使用 Shader Mask 时出现渐变
- apache-spark - 在启用了 spark 身份验证和加密的 spark 独立集群上,无法通过 spark-submit 杀死 spark 应用程序
- php - 如何在 CakePHP 身份验证插件中结合本地登录和谷歌登录?
- react-native - 如何使用反应导航版本 5 进行嵌套导航,因为我在同一屏幕上也有 redux