返回错误的函数
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 104 课,共 109 课。
在 Go 中,函数通常会将 error 作为最后一个返回值,用来表示是否发生了错误。
创建一个同时返回结果和错误的函数:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}调用函数并处理错误:
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}输出将是:
Error: cannot divide by zero挑战
入门在这个挑战中,你将练习创建一个在输入无效时返回错误的函数。
你需要完成 validateUsername 函数,用于检查用户名是否有效。用户名长度至少为 3 个字符才有效。如果用户名有效,就为错误返回 nil。如果用户名无效,就返回一条合适的错误消息。
调用函数并处理错误的代码已经为你编写好了。
注意:这个挑战使用预定义的变量,而不是用户输入。
亲手试试
package main
import (
"errors"
"fmt"
)
func validateUsername(username string) error {
// TODO: 检查用户名是否少于 3 个字符
// 如果是,返回一条消息为 "username too short" 的错误
// 否则,返回 nil(没有错误)
return nil
}
func main() {
// 用有效的用户名测试
validName := "bob123"
err1 := validateUsername(validName)
if err1 != nil {
fmt.Printf("%s is invalid: %v\n", validName, err1)
} else {
fmt.Printf("%s is valid!\n", validName)
}
// 用无效的用户名测试
invalidName := "ab"
err2 := validateUsername(invalidName)
if err2 != nil {
fmt.Printf("%s is invalid: %v\n", invalidName, err2)
} else {
fmt.Printf("%s is valid!\n", invalidName)
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Go 在线编译器