有没有办法使用通用参数使用一个函数而不是如下所示有两个函数?我有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
}
答案 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")
}
}