더북(TheBook)

반환 값

Go에서는 값을 하나 이상 반환할 수 있다. 반환 값이 하나일 때는 괄호를 생략하고, 두 개 이상일 때는 괄호로 묶어준다.

▼ 반환 값이 하나일 때

package main
  
import "fmt"
  
func area(w, h int) int {
    return w * h
}
  
func main() {
    v := area(3, 4)
    fmt.Println(v)
}

실행 결과

12

▼ 반환 값이 두 개 이상일 때

package main
  
import "fmt"
  
func multiply(w, h int) (int, int) {
    return w * 2, h * 2
}
  
func main() {
    w, h := multiply(3, 4)
    fmt.Println(w, h)
}

실행 결과

6 8

함수의 결과를 변수에 할당할 때 결과를 할당할 변수와 함수의 반환 값 개수가 같아야 한다. 이 코드에서 v := multiply(3, 4)multiply 함수를 호출하면 결과를 할당할 변수와 함수의 반환 값 개수가 달라 컴파일 에러가 발생한다.

▼ 함수의 결과를 할당할 변수와 반환 값 개수가 다를 때 컴파일 에러 발생

package main
  
import "fmt"
  
func main() {
    v := multiply(3, 4) // 컴파일 에러 발생
    fmt.Println(v)
}
  
func multiply(w, h int) (int, int) {
    return w * 2, h * 2
}

실행 결과

prog.go:6: multiple-value multiply() in single-value context

Go 코드 컨벤션

함수에서 값을 너무 많이 반환하면 가독성이 떨어질 수 있다. 반환 값은 보통 세 개 이내로만 사용하는 게 좋다. 값을 네 개 이상 반환할 때는 배열이나 구조체로 반환하는 것을 권장한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.