面试题答案
一键面试在Go语言中虽没有原生函数重载,但可通过以下几种方式实现类似效果:
1. 函数多参数形式
- 实现方式:定义一个函数,通过接收不同数量或类型的参数来达到类似重载的效果。在函数内部根据参数的情况进行不同的逻辑处理。
- 示例:
package main
import (
"fmt"
)
func calculate(a, b int) int {
return a + b
}
func calculateWithFloat(a, b float64) float64 {
return a + b
}
- 应用场景:比如在一个数学计算库中,针对整数和浮点数的加法运算,可以通过这种方式来实现不同类型数据的计算。
2. 接口与多态
- 实现方式:定义一个接口,不同的结构体类型实现该接口的同名方法。调用时根据实际的结构体类型执行相应的方法。
- 示例:
package main
import (
"fmt"
)
type Shape interface {
Area() float64
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
type Rectangle struct {
Width float64
Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
- 应用场景:在图形绘制库中,对于不同的图形(如圆形、矩形),可以通过实现相同的
Area
接口方法来计算不同图形的面积。
3. 可变参数
- 实现方式:使用可变参数
...
,函数可以接收任意数量的同类型参数,在函数内部可以对这些参数进行统一处理或根据参数数量进行不同逻辑处理。 - 示例:
package main
import (
"fmt"
)
func sum(nums ...int) int {
result := 0
for _, num := range nums {
result += num
}
return result
}
- 应用场景:在计算一组数的总和时,无论这组数有多少个,都可以通过可变参数传递给
sum
函数进行计算。