값이 없는 Golang Cobra 여러 플래그

WBOY
풀어 주다: 2024-02-05 23:00:14
앞으로
560명이 탐색했습니다.

Golang Cobra 多个标志没有值

질문 내용

저는 golang을 처음 접하고 cobra 프레임워크를 사용하여 첫 번째 cli 애플리케이션을 시도하고 있습니다.

제 계획은 명령어를 적게 사용하고 플래그를 많이 사용하는 것입니다. 이러한 플래그에는 장치를 재부팅하기 위해 -r과 함께 간단히 사용할 수 있으므로 값을 추가할 필요가 없습니다.

현재 다음 작업을 수행하고 있지만 이 방법은 올바른 방법이 아니라고 생각했습니다. 따라서 어떤 도움이라도 대단히 감사하겠습니다.

현재 논리는 각 명령에 기본값이 추가된 다음 실행 명령에서 해당 값을 찾고 이를 캡처한 후 함수를 트리거하는 것입니다.

내 "작업 코드"는 다음과 같습니다.

My init 함수에는 명령에 다음 내용이 포함되어 있습니다.

으아악

실행 부분은 아래와 같습니다.

chargercmd.flags().stringp("updatefirmware", "u", "", "updeates the firmware of the charger")
    chargercmd.flags().lookup("updatefirmware").nooptdefval = "yes"
    chargercmd.flags().stringp("reboot", "r", "", "reboots the charger")
    chargercmd.flags().lookup("reboot").nooptdefval = "yes"
로그인 후 복사

정답


burak의 의견에서 언급했듯이 사용법을 좀 더 명확하게 만들기 위해 명령과 플래그를 더 잘 구별할 수 있습니다. cobra를 사용하면 루트 명령과 루트 명령에 하위 명령을 연결할 수 있습니다. 또한 각 명령은 플래그를 허용할 수 있습니다.

귀하의 경우에는 charger 是根命令,您需要两个子命令:update_firmwarereboot.

충전기를 다시 시작하는 예로서 다음 명령을 실행합니다.

으아악

위 코드에서는 하위 명령을 플래그로 정의하려고 합니다. 이는 가능하지만 좋은 방법은 아닐 것입니다.

대신 프로젝트는 다음과 같이 설정되어야 합니다: https://github.com/hesamchobanlou/stackoverflow/tree/main/74934087

그런 다음 루트 Chargercmd에서 모든 플래그 변형을 확인하는 대신 cmd/update_firmware.go 아래의 해당 명령 정의에서 updatefirmware(...) 작업을 이동할 수 있습니다.

이 방법이 도움이 되지 않는다면 귀하의 접근 방식이 올바르지 않다고 생각하는 이유에 대해 더 자세한 내용을 제공해 주세요.

위 내용은 값이 없는 Golang Cobra 여러 플래그의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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