[go] Go 언어에서의 에러처리와 동시성
Go 언어는 간결하고 효율적인 동시성 모델로 유명합니다. 또한, 강력한 에러처리 메커니즘을 갖추고 있어 안정적인 프로그램을 작성하는 데 유용합니다. 이 글에서는 Go 언어에서의 에러처리와 동시성에 대해 알아보겠습니다.
에러처리
Go 언어는 함수의 반환 값을 통해 에러를 처리하는데, 일반적으로 함수가 에러를 반환할 경우 두 번째 반환 값으로 error
를 반환합니다. 이를 통해 호출자는 발생한 에러를 쉽게 처리할 수 있습니다.
func divide(x, y int) (int, error) {
if y == 0 {
return 0, errors.New("division by zero")
}
return x / y, nil
}
func main() {
result, err := divide(6, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}
위 예제에서 divide
함수는 두 번째 반환 값으로 에러를 반환하며, 호출자는 이를 확인하여 적절히 처리할 수 있습니다.
동시성
Go 언어는 고루틴(goroutine)이라는 경량 스레드를 통해 동시성을 지원합니다. 고루틴은 쉽게 생성하고 관리할 수 있어 병렬 처리를 간단하게 구현할 수 있습니다. 또한, 채널(channel)을 활용하여 고루틴끼리 통신할 수 있어 안전하고 효율적인 동시성 프로그래밍이 가능합니다.
func main() {
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
fmt.Println(value)
}
위 예제에서는 별도의 고루틴에서 채널을 통해 값을 보내고, 이를 메인 함수에서 받아 출력하는 간단한 동시성 예제입니다.
결론
Go 언어는 간결하면서도 효율적인 에러처리 메커니즘과 동시성 모델을 갖추고 있어 안정적이고 빠른 프로그램을 작성할 수 있습니다. 에러처리와 동시성은 모든 프로그래밍 언어에서 중요한 요소이지만, Go 언어는 이를 강력하게 지원하여 프로그래머가 더욱 안정적이고 효율적인 코드를 작성할 수 있도록 도와줍니다.
Go 언어 공식 문서 Effective Go Go 언어 블로그