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))
这样的东西可能吗?