面试题答案
一键面试- 使用
error
类型处理错误:- 在Go语言中,函数通常会返回一个
error
类型的值来表示操作是否成功。如果error
为nil
,表示操作成功;否则,表示操作失败,并可以通过error
获取错误信息。 - 示例:
- 在Go语言中,函数通常会返回一个
package main
import (
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
调用这个函数时:
func main() {
result, err := divide(10, 2)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}
- 使用
defer
语句和error
类型结合处理错误:defer
语句用于延迟执行一个函数调用,通常用于资源清理(如关闭文件、数据库连接等)。当函数返回时,defer
语句后的函数会按照后进先出(LIFO)的顺序执行。- 示例:
package main
import (
"fmt"
"os"
)
func readFileContent(filePath string) (string, error) {
file, err := os.Open(filePath)
if err != nil {
return "", err
}
defer file.Close()
// 假设这里有读取文件内容的逻辑,简单返回文件名
return filePath, nil
}
调用这个函数时:
func main() {
content, err := readFileContent("nonexistentfile.txt")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Content:", content)
}
}
在这个例子中,通过defer file.Close()
确保无论os.Open
之后的代码是否出现错误,文件最终都会被关闭。如果os.Open
出错,err
不为nil
,函数提前返回,但defer
语句依然会执行文件关闭操作。