Menu
Coddy logo textTech

에러를 반환하는 함수

Coddy GO 여정의 기초 섹션에 포함된 레슨 — 109개 중 104번째.

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을 반환하세요. 유효하지 않다면 적절한 메시지와 함께 에러를 반환하세요.

함수를 호출하고 에러를 처리하는 코드는 이미 작성되어 있습니다.

참고: 이 챌린지는 사용자 입력 대신 미리 정의된 변수를 사용합니다.

치트 시트

Go의 함수는 일반적으로 무언가 잘못되었음을 나타내기 위해 마지막 반환 값으로 error를 반환합니다.

결과와 에러를 모두 반환하는 함수를 만듭니다:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

함수를 호출할 때 에러를 처리합니다:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

에러가 없을 때는 nil을 반환하고, 에러 메시지를 생성할 때는 errors.New()를 사용합니다.

직접 해보기

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실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨