我正在使用将fmt.Sscan字符串转换为任何类型,这就是我正在做的事情:
package main
import (
"fmt"
"reflect"
)
func test() interface{} {
return 0
}
func main() {
a := test() // this could be any type
v := "10" // this could be anything
fmt.Println(reflect.TypeOf(a), reflect.TypeOf(&a))
_, err := fmt.Sscan(v, &a)
fmt.Println(err)
}
此代码失败,因为Sscan
不接受接口作为第二个值:can't scan type: *interface {}
。演示
我觉得最奇怪的是第一个 print 打印:int *interface {}, is it a int or an interface?
我如何断言a正确的类型(它可以是任何原始类型)?有没有不包含巨型 switch 语句的解决方案?
谢谢。
慕斯709654
相关分类