> 백엔드 개발 > Golang > golang 플래그 란 무엇입니까?

golang 플래그 란 무엇입니까?

(*-*)浩
풀어 주다: 2019-12-03 10:09:59
원래의
2989명이 탐색했습니다.

golang 플래그 란 무엇입니까?

Golang 프로그램에서 명령줄 매개변수를 처리하는 방법에는 여러 가지가 있습니다. 간단한 경우 라이브러리를 사용하지 않고 os.Args를 직접 처리할 수 있습니다. 실제로 Golang의 표준 라이브러리는 명령줄 매개변수를 처리하기 위한 플래그 패키지를 제공합니다. Pflag와 같은 명령줄 매개변수 처리를 위한 타사 라이브러리도 있습니다.了Flag 패키지는 분석 명령줄 매개변수의 일련의 기능적 인터페이스를 제공합니다(권장 학습: Go

)

명령줄 문법

명령줄 구문에는 주로 다음 형식이 포함됩니다.

-flag //只支持bool类型
-flag=x
-flag x //只支持非bool类型
로그인 후 복사

이상 구문에는 하나 또는 두 개의 '-' 기호에 대해 동일한 효과가 있지만 세 번째 경우에는 bool이 아닌 유형만 지원된다는 점에 유의해야 합니다. 그 이유는 다음 상황이 발생하면

cmd -x *
로그인 후 복사
*가 0이고 false이기 때문입니다. 파일 이름이나 파일은 x 태그의 값이 0 또는 false임을 나타낼 수도 있으므로 모호성을 유발할 수 있으므로 세 번째 유형은 bool이 아닌 유형만 지원하도록 규정됩니다. 정수 플래그의 경우 유효한 값은 1234, 0664, 0x1234 또는 음수 등이 될 수 있습니다. Boolean 플래그의 경우 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False 등이 될 수 있습니다.

명령줄 매개변수 분석 방법

플래그 사용에는 주로 다음이 포함됩니다. 다음 단계는

flag.String(), Bool(), Int() 및 기타 flag.Xxx() 메서드를 통해 플래그 매개변수

를 정의하는 세 가지 방법이 있습니다. 이 메서드는 해당 포인터

import "flag"
var ip = flag.Int("flagname", 1234, "help message for flagname")
로그인 후 복사
를 반환합니다. XxxVar() 메서드는 플래그를 변수에 바인딩합니다. 이 메서드는
var flagvar int
func init() {
    flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
}
로그인 후 복사

와 같은 값 유형을 반환합니다. flag.Var()를 통해 사용자 정의 유형을 구현해야 합니다. 포인터)(예:

flag.Var(&flagVal, "name", "help message for flagname")
로그인 후 복사

이 유형의 플래그의 경우 기본값은 변수 유형의 초기 값입니다.

명령줄 매개변수를 정의된 플래그로 구문 분석하기 위해 플래그.Parse()를 호출합니다.

flag.Parse()
로그인 후 복사

파싱 함수는 명령줄 매개변수가 있는 경우 첫 번째 비플래그 중지를 발견합니다. 비플래그 명령줄 매개변수는 명령줄 구문을 충족하지 않는 매개변수를 참조합니다. 예를 들어, 명령줄 매개변수가 cmd --flag=true abc인 경우입니다. , 플래그가 아닌 첫 번째 명령줄 매개변수는 "abc"입니다

Call Parse 구문 분석 후 플래그 자체(포인터 유형) 또는 바인딩된 변수(값 유형)를 직접 사용할 수 있습니다

fmt.Println("ip has value ", *ip)
fmt.Println("flagvar has value ", flagvar)
로그인 후 복사

플래그가 아닌 명령을 얻을 수도 있습니다 flag.Args(), flag.Arg(i)

를 통한 라인 매개변수

위 내용은 golang 플래그 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿