Menu
CoddyTech

返回错误的函数

本课属于 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
challenge icon

挑战

入门

在这个挑战中,你将练习创建一个在输入无效时返回错误的函数。

你需要完成 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)
	}
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Go 在线编译器