如何将自定义类型转换interface{}为基本类型(例如uint8)?
我不能使用直接转换,uint16(val.(Year))因为我可能不知道所有自定义类型,但我可以在运行时确定基本类型 ( uint8, uint32,...)
有许多基于数字的自定义类型(通常用作枚举):
前任:
type Year uint16
type Day uint8
type Month uint8
等等...
问题是关于从类型转换interface{}到基本类型的类型转换:
package main
import "fmt"
type Year uint16
// ....
//Many others custom types based on uint8
func AsUint16(val interface{}) uint16 {
return val.(uint16) //FAIL: cannot convert val (type interface {}) to type uint16: need type assertion
}
func AsUint16_2(val interface{}) uint16 {
return uint16(val) //FAIL: cannot convert val (type interface {}) to type uint16: need type assertion
}
func main() {
fmt.Println(AsUint16_2(Year(2015)))
}
http://play.golang.org/p/cyAnzQ90At
相关分类