[go] Stack trace 출력을 위한 Wrap 함수

Go 언어에서는 종종 함수 호출 시 Stack Trace를 출력해야 하는 경우가 있습니다. 이때 Wrap 함수를 사용하면 쉽게 Stack Trace 정보를 가져올 수 있습니다.

Wrap 함수는 errors 패키지에서 제공하는 fmt.Errorf 함수를 래핑한 함수로, 오류를 생성하면서 Stack Trace 정보를 추가할 수 있습니다.

다음은 Wrap 함수를 사용한 예제 코드입니다.

package main

import (
	"errors"
	"fmt"
	"runtime"
)

func Wrap(err error) error {
	if err == nil {
		return nil
	}
	pc, file, line, ok := runtime.Caller(1)
	if ok {
		return fmt.Errorf("%s\n%s:%d\n%s", err, file, line, runtime.FuncForPC(pc).Name())
	}
	return err
}

func main() {
	err := errors.New("example error")
	err = Wrap(err)
	fmt.Println(err)
}

이 예제에서는 Wrap 함수를 사용하여 errors.New로 발생한 오류에 Stack Trace 정보를 추가합니다. 코드를 실행하면 오류에 대한 Stack Trace 정보가 함께 출력됩니다.

이처럼 Wrap 함수를 활용하면 오류 관련 정보를 보다 효과적으로 추적할 수 있습니다.

더 자세한 내용은 Go 언어 공식 문서를 참고하세요.

내용에 대한 추가 질문이 있으면 언제든지 물어보세요!