在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语言明确不支持函数重载。
还没有评论,来说两句吧...