【发布时间】:2020-07-09 18:15:30
【问题描述】:
type MyNumber interface {
float32, float64, uint, int // this is not supported
}
func PrintNumber(n MyNumber) {
switch n.(type) {
case float32, float64, uint, int:
fmt.Printf("%v\n", n)
default:
panic("PrintNumber only supports types float32, float64, uint, int")
}
}
在go中,可以定义一个空白接口,基本上允许任何类型
var v interface{}
v = "string"
v = 0.1
有没有办法将允许的类型减少到特定的类型列表?
类似
type MyNumber float32, float64, uint, int
或
type MyNumber interface {
float32, float64, uint, int
}
这样我可以让编译器检查函数是否支持该类型。
【问题讨论】: