플래그와 영속 플래그
문자열, 정수, 불리언 플래그와 Viper 통합
플래그와 영속 플래그은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
지역 플래그
지역 플래그는 정의된 명령에서만 적용됩니다. cmd.Flags()를 사용합니다:
var port int
serveCmd.Flags().IntVar(&port, "port", 8080, "HTTP server port")영속 플래그
영속 플래그는 해당 명령과 모든 하위 명령에 상속됩니다. cmd.PersistentFlags()를 사용합니다:
var verbose bool
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose output")짧은 플래그
한 글자 축약형을 추가하려면 *VarP 변형을 사용합니다:
cmd.Flags().StringVarP(&output, "output", "o", "stdout", "Output destination")플래그 유형
Cobra는 pflag를 통해 String, Bool, Int, Int64, Float64, StringSlice, Duration, Count 등을 지원합니다. 각 유형에는 Var 변형(포인터를 받음)과 편의 변형(포인터를 반환함)이 있습니다.
필수 플래그
플래그를 필수로 지정하면 Cobra는 해당 플래그가 제공되지 않을 때 오류를 냅니다:
cmd.MarkFlagRequired("config")플래그 그룹
MarkFlagsRequiredTogether와 MarkFlagsMutuallyExclusive를 사용하여 플래그를 함께 필수로 지정하거나 상호 배타적으로 설정합니다:
cmd.MarkFlagsRequiredTogether("user", "password")
cmd.MarkFlagsMutuallyExclusive("json", "yaml")StringSlice 플래그
쉼표로 구분된 목록이나 반복된 플래그를 사용하여 여러 값을 받습니다:
var tags []string
cmd.Flags().StringSliceVar(&tags, "tags", nil, "Tags (comma-separated)")
// Usage: --tags a,b,c or --tags a --tags bViper에 플래그 바인딩
Cobra 플래그를 Viper 키에 바인딩하여 환경 변수나 구성 파일에서도 값을 가져올 수 있게 합니다:
viper.BindPFlag("port", serveCmd.Flags().Lookup("port"))
viper.BindEnv("port", "APP_PORT")기본값 표시
Cobra는 도움말 텍스트에 기본값을 자동으로 표시합니다. 일반적인 경우에 별도 설정 없이 작동하는 명확한 기본값을 제공하십시오.
플래그 값에 접근하기
바인딩한 포인터를 통해 플래그 값에 접근하거나, 포인터에 접근할 수 없다면 명령의 플래그 집합에서 이름으로 값을 조회합니다:
port, _ := cmd.Flags().GetInt("port")변경 여부 메서드
cmd.Flags().Changed("flag-name")은 사용자가 플래그를 명시적으로 설정한 경우에만 true를 반환합니다. 이를 사용하여 ‘제공되지 않음’과 ‘기본값으로 제공됨’을 구분합니다.
빠른 확인
Cobra에서 지역 플래그와 영속 플래그의 차이점은 무엇인가요?
복습: 플래그와 영속 플래그
핵심 사항:
- cmd.Flags(): 지역 플래그, cmd.PersistentFlags(): 하위 명령에 상속되는 영속 플래그
- 축약형에는 *VarP를, 필수 플래그에는 MarkFlagRequired를 사용합니다
- 관계 설정에는 MarkFlagsRequiredTogether / MarkFlagsMutuallyExclusive를 사용합니다
- 사용자가 플래그를 명시적으로 설정했는지는 Changed()로 확인합니다
자주 묻는 질문
“플래그와 영속 플래그” 강의는 무료인가요?
네 — “플래그와 영속 플래그” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“플래그와 영속 플래그”에서 뭘 배우나요?
문자열, 정수, 불리언 플래그와 Viper 통합 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“플래그와 영속 플래그” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Cobra 기초
- 플래그와 영속 플래그
- 하위 명령과 명령 그룹
- CLI 도구 배포