ความแตกต่างระหว่าง Go-Cobra PersistentFlags และ Flags คืออะไร?

Aug 20 2020

ฉันกำลังพยายามคิดว่าความแตกต่างระหว่าง PersistentFlags และ Flags ใน go-Cobra คืออะไรและเมื่อใดที่เราควรใช้ ฉันได้อ่านสิ่งนี้แต่ฉันไม่เข้าใจ

คำตอบ

3 torek Aug 20 2020 at 11:48

เมื่อใช้ Cobra คุณต้องกำหนดคำสั่งระดับบนสุด:

prog

คำสั่งระดับบนสุดนี้มีคำสั่งย่อย ตัวอย่างเช่นสมมติว่าเรามีสามย่อยคำสั่งinit, และstartstop

prog init [-i]         # initialize, but don't start anything: -i means ignore
prog start [-f] [-q]   # after init, start: -f=fast, -q=quiet 
prog stop [-f]         # stop: -f=force

-iธงเป็นเพียงinitเพื่อให้เราเพิ่ม-iธงไปinitsubcommand

-qธงเป็นเพียงstartเพื่อให้เราเพิ่ม-qธงไปstartsubcommand และอื่น ๆ

ตอนนี้เราต้องการเพิ่มโหมดดีบักให้กับทุกคำสั่ง เราสามารถเข้าไปในแต่ละคำสั่งและเพิ่ม--debugแฟล็ก ... แต่เราสามารถตั้งค่าแฟล็กถาวรสำหรับคำสั่ง root ได้ แฟล็กถาวรนี้จะพร้อมใช้งานในทุกคำสั่งย่อย

หากคุณมีคำสั่งย่อยที่มีคำสั่งย่อยคุณสามารถตั้งค่าแฟล็กถาวรในคำสั่งย่อยเพื่อให้แฟล็กนั้นปรากฏในทุกคำสั่งย่อยและอื่น ๆ