[go] go 언어에서의 플래그 관련 에러 핸들링

Golang은 명령행 인자를 처리하기 위해 내장된 flag 패키지를 제공합니다. 이 패키지를 사용하면 프로그램을 실행할 때 사용자로부터 입력을 받아 처리할 수 있습니다. 하지만 때때로 잘못된 입력에 대한 에러 처리가 필요합니다.

플래그 설정과 파싱

flag 패키지를 사용하여 명령행 플래그를 설정하고 파싱하는 방법은 다음과 같습니다.

package main

import (
	"flag"
	"fmt"
)

func main() {
	wordPtr := flag.String("word", "foo", "a string")
	numbPtr := flag.Int("numb", 42, "an int")
	boolPtr := flag.Bool("fork", false, "a bool")

	flag.Parse()

	fmt.Println("word:", *wordPtr)
	fmt.Println("numb:", *numbPtr)
	fmt.Println("fork:", *boolPtr)
}

위의 예제에서 String, ` Int, Bool 함수를 사용하여 각각의 플래그를 정의하고, flag.Parse()`로 입력된 플래그 값을 파싱합니다.

에러 핸들링

잘못된 입력 또는 필수 입력이 누락된 경우를 처리하기 위해서는 에러 핸들링이 필요합니다. Golang에서는 flag 패키지가 에러를 반환하도록 지원하고 있습니다.

다음은 에러 핸들링을 추가한 예제입니다.

package main

import (
	"flag"
	"fmt"
	"os"
)

func main() {
	wordPtr := flag.String("word", "foo", "a string")
	numbPtr := flag.Int("numb", 42, "an int")
	boolPtr := flag.Bool("fork", false, "a bool")

	flag.Parse()

	if len(os.Args) < 2 {
		flag.PrintDefaults()
		os.Exit(1)
	}

	fmt.Println("word:", *wordPtr)
	fmt.Println("numb:", *numbPtr)
	fmt.Println("fork:", *boolPtr)
}

위의 예제에서, len(os.Args)를 사용하여 입력된 명령행 인자의 개수를 확인하고, 필요한 만큼의 인자가 입력되지 않은 경우 flag.PrintDefaults()로 사용법을 출력하고 프로그램을 종료합니다.

이제 플래그와 에러 핸들링을 함께 사용하여 Golang으로 더욱 효율적으로 명령행 입력을 처리할 수 있습니다.

참고문헌: