Golang通用参数

时间:2016-08-28 05:45:59

标签: generics go

有没有办法使用通用参数使用一个函数而不是如下所示有两个函数?我有Java背景,正在寻找一种方法来获得这样的东西

//Java
public Something doSomething(T val)

//Go
func (l *myclass) DoSomethingString(value string) error {
    test := []byte[value]
    // do something with test
    return err
}
func (l *myclass) DoSomethingInt(value int64) error {
    test := []byte[value]
    // do something with test
    return err
}

1 个答案:

答案 0 :(得分:3)

不幸的是,Go没有泛型,也没有超载。您可以使用interface{}类型的参数并切换它的实际类型:

func (*Test) DoSomething(p interface{}) {
    switch v := p.(type) {
        case int64:
            fmt.Println("Got an int:", v)
        case string:
            fmt.Println("Got a string", v)
        default:
            fmt.Println("Got something unexpected")
    }
}

Link on Playground

相关问题