Golang类型开关需要(冗余)类型断言
我想使用调用特定于类型的解析函数 包干管 进口 fmt func main{ 变量值接口{} value=我是一个字符串 开关v:=value.type{ 大小写字符串: parseStringvalue 违约: fmt.PrintfI不知道类型%t!\n,v } } 函数解析字符串{ 打印格式 } 但是,由于缺少一个: 无法将值类型接口{}用作parseString:需要类型断言的参数中的类型字符串 添加类型断言可修复此错误 包干管 进口 fmt func main{ 变量值接口{} value=我是一个字符串 开关v:=value.type{ 大小写字符串: s、 确定:=value.string 如果可以的话{ 解析字符串 } 违约: fmt.PrintfI不知道类型%t!\n,v } } 函数解析字符串{ 打印格式 } 但这感觉是多余的。我现在检查两次,该值是否为字符串 我应该在类型开关和类型断言之间进行选择吗?也许有一种不那么多余的方法可以做到这一点?这个例子是人为的。可能有很多类型,这就是为什么类型开关看起来像是干净的解决方案…直到我开始添加类型资产 使现代化 这个问题已获得多张反对票。我认为这忽略了Go的type switch令人困惑的本质,它最初看起来好像打开的值是类型,而不是值 开关v:=value.type{ 大小写字符串: // ... 案例int: // ... }Golang类型开关需要(冗余)类型断言,go,Go,我想使用调用特定于类型的解析函数 包干管 进口 fmt func main{ 变量值接口{} value=我是一个字符串 开关v:=value.type{ 大小写字符串: parseStringvalue 违约: fmt.PrintfI不知道类型%t!\n,v } } 函数解析字符串{ 打印格式 } 但是,由于缺少一个: 无法将值类型接口{}用作parseString:需要类型断言的参数中的类型字符串 添加类型断言可修复此错误 包干管 进口 fmt func main{ 变量值接口{} valu
我是新手,错误地认为v是我喜欢的类型。如果我第一次编写Go时遇到这个问题,其他人也可能会遇到这个问题?使用您在开关中声明的值:
switch v := value.(type) {
case string:
// v is string here
parseString(v)
...
使用v from开关v:=value.type@volker谢谢。我已经更新了我的问题,解释了为什么我错过了这个显而易见的解决方案。这一点在中有介绍,所以它不太可能打扰很多人,因为这次旅行是语言介绍。