[go] Go 언어에서의 리소스 관리와 에러 처리

Go 언어는 메모리 관리와 에러 처리에 대해 매우 강력한 기능을 제공합니다. 이러한 기능들을 적절히 활용하여 안정적이고 효율적인 프로그램을 개발할 수 있습니다.

리소스 관리

Go 언어는 메모리 관리를 위해 가비지 컬렉션(garbage collection)을 지원합니다. 가비지 컬렉션은 더 이상 사용되지 않는 메모리를 자동으로 수거하여 메모리 누수를 방지합니다. 또한, Go 언어는 포인터(pointer)를 직접 다루는 것을 지원하며, 슬라이스(slice)와 (map) 등의 자료구조를 활용하여 메모리를 효율적으로 활용할 수 있도록 지원합니다.

아래는 Go 언어에서의 메모리 할당과 해제의 간단한 예제 코드입니다.

package main

import (
	"fmt"
)

func main() {
	// 메모리 할당
	num := new(int)
	*num = 10
	fmt.Println(*num)

	// 메모리 해제
	freeMem(num)
}

func freeMem(num *int) {
	fmt.Println("메모리 해제:", *num)
	// 메모리 해제
}

에러 처리

Go 언어는 에러 반환(error returning)을 통해 에러 처리를 지원합니다. 함수가 에러를 반환하도록 정의되어 있으면, 호출하는 쪽에서 해당 에러를 처리할 수 있습니다. 이를 통해 안정적인 프로그램을 작성할 수 있습니다.

아래는 Go 언어에서의 에러 처리 예제 코드입니다.

package main

import (
	"fmt"
	"errors"
)

func divide(a, b int) (int, error) {
	if b == 0 {
		return 0, errors.New("나누는 수는 0일 수 없습니다.")
	}
	return a / b, nil
}

func main() {
	result, err := divide(6, 0)
	if err != nil {
		fmt.Println("에러 발생:", err)
		return
	}
	fmt.Println("나눈 결과:", result)
}

이처럼 Go 언어는 메모리 관리와 에러 처리를 위한 강력한 기능을 제공하여 안정적이고 효율적인 프로그램을 개발할 수 있게 도와줍니다.

참고 자료: