在java语言中,有一个叫做多态的概念,也就是一个方法可以接受任意类型的参数,下面我们使用java语言列举下这个多态的样例:
package com.test.inter;
public class StudentUtils {
public int success(int i, int j) {
return i + j;
}
public String success(String a, String b) {
return a + b;
}
public static void main(String[] args) {
StudentUtils studentUtils = new StudentUtils();
System.out.println(studentUtils.success(1, 2));
System.out.println(studentUtils.success("hello", "world"));
}
}可以看到在咱们这个案例里面,相同名称的方法函数里面,可以返回不同的类型,同时也可以接受不同类型的参数,那么在go语言里面可以实现这种吗?
答案是不能。下面我们列举个go语言的案例:
// demo1 project main.go
package main
import (
"fmt"
"strconv"
)
func concat(a, b int) string {
return strconv.Itoa(a + b)
}
func concat(x, y string) string {
return x + " " + y
}
func main() {
fmt.Println(concat(1, 2))
fmt.Println(concat("hello", "world"))
}然后我们编译下,就可以看到直接报错了:
从上图的运行结果可以看出是不能这么去实现的,那么在go语言里面我们遇到这种情况怎么办呢?答案是修改下函数名称即可,例如把第二个concat函数名修改为concat1,示例如下:
// demo1 project main.go
package main
import (
"fmt"
"strconv"
)
func concat(a, b int) string {
return strconv.Itoa(a + b)
}
func concat1(x, y string) string {
return x + " " + y
}
func main() {
fmt.Println(concat(1, 2))
fmt.Println(concat1("hello", "world"))
}然后我们再运行一下:
以上就是我们演示的go语言不支持函数重载的案例。
备注:
1、这种相同名称但是参数或者返回值不一样的形式,在java语言中称为多态,在go语言或者c语言中称为函数重载。
2、go语言明确不支持函数重载。



还没有评论,来说两句吧...