Function 使用接口的泛型函数
因为我为两种不同的数据类型提供了类似的函数:Function 使用接口的泛型函数,function,interface,generics,go,Function,Interface,Generics,Go,因为我为两种不同的数据类型提供了类似的函数: func GetStatus(value uint8) (string) {...} func GetStatus(name string) (string) {...} 我想用一种更简单的方式,比如: func GetStatus(value interface{}) (string) {...} 是否可以使用接口创建通用函数? 可以使用reflect检查数据类型。Typeof(value)您想做的事情是否需要软件包的复杂性和开销?您是否考虑过
func GetStatus(value uint8) (string) {...}
func GetStatus(name string) (string) {...}
我想用一种更简单的方式,比如:
func GetStatus(value interface{}) (string) {...}
是否可以使用接口创建通用函数?
可以使用
reflect检查数据类型。Typeof(value)
您想做的事情是否需要软件包的复杂性和开销?您是否考虑过一个简单的语句type
开关
package main
import (
"fmt"
)
func GetStatus(value interface{}) string {
var s string
switch v := value.(type) {
case uint8:
v %= 85
s = string(v + (' ' + 1))
case string:
s = v
default:
s = "error"
}
return s
}
func main() {
fmt.Println(GetStatus(uint8(2)), GetStatus("string"), GetStatus(float(42.0)))
}
有没有办法扩展到更多类型?还是我必须为我需要的每一种类型写“案例”?像
originalValue:=value.(reflect.TypeOf(value))
这样的东西可能吗?