面试题答案
一键面试- 零值:
对于自定义类型
type MyInt int
,其零值与基础类型int
的零值相同,都是0
。这是因为Go语言中,自定义类型基于基础类型定义时,零值继承自基础类型。 - 处理边界情况: 在函数中处理可能引发的边界情况(如除法运算防止除以零),可以在进行运算前添加条件判断。
- 示例代码:
package main
import (
"fmt"
)
type MyInt int
func divide(a, b MyInt) (MyInt, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
可以这样调用这个函数:
func main() {
a := MyInt(10)
b := MyInt(2)
result, err := divide(a, b)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("Result of division: %d\n", result)
}
bZero := MyInt(0)
result, err = divide(a, bZero)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("Result of division: %d\n", result)
}
}
在上述代码中,divide
函数接收两个MyInt
类型的参数,在进行除法运算前,先判断除数是否为零。如果除数为零,返回错误;否则,返回除法运算的结果。在main
函数中,分别用正常的除数和零除数进行测试。