MST

星途 面试题库

面试题:Go中自定义类型边界情况之零值处理

在Go语言中,定义一个自定义类型`type MyInt int`,请说明该自定义类型的零值是什么,并阐述如何在函数中处理该零值可能引发的边界情况,比如进行除法运算时防止除以零。请给出示例代码。
37.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 零值: 对于自定义类型type MyInt int,其零值与基础类型int的零值相同,都是0。这是因为Go语言中,自定义类型基于基础类型定义时,零值继承自基础类型。
  2. 处理边界情况: 在函数中处理可能引发的边界情况(如除法运算防止除以零),可以在进行运算前添加条件判断。
  3. 示例代码
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函数中,分别用正常的除数和零除数进行测试。