2 คะแนน โดย xguru 2025-03-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ตัวแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งที่เป็นไปตามมาตรฐาน GNU เช่น ./test -vo out.png --size 256 input.txt
  • มีข้อความช่วยเหลือในตัวผ่าน -h และ --help
  • แมปอาร์กิวเมนต์เข้ากับฟิลด์ของ struct ด้วยการตั้งค่าแท็ก
  • รองรับฟิลด์ชนิดข้อมูลเชิงประกอบ เช่น อาร์เรย์ สไลซ์ และ struct
  • รองรับซับคอมมานด์แบบซ้อนกัน

กฎของอาร์กิวเมนต์บรรทัดคำสั่งแบบ GNU

  • รายการที่ขึ้นต้นด้วยขีดกลาง (-) ถือเป็นออปชัน
  • สามารถรวมหลายออปชันเข้าด้วยกันได้ (-abc เทียบเท่ากับ -a -b -c)
  • ออปชันแบบยาวขึ้นต้นด้วยขีดกลางสองตัว (--abc)
  • ชื่อออปชันใช้ได้เฉพาะอักขระตัวอักษรและตัวเลข
  • ค่าของออปชันสามารถกำหนดด้วยช่องว่าง เครื่องหมายเท่ากับ (=) หรือค่าที่ต่อเนื่องกันได้ (-a1, -a=1, -a 1 เหมือนกันทั้งหมด)
  • สามารถผสมค่าออปชันและค่าที่ไม่ใช่ออปชันได้โดยไม่มีปัญหา
  • ออปชันสามารถปรากฏในลำดับใดก็ได้
  • -- หมายถึงสิ้นสุดออปชัน ดังนั้นอาร์กิวเมนต์หลังจากนั้นทั้งหมดจะถูกมองเป็นค่าที่ไม่ใช่ออปชัน
  • - เดี่ยวโดยทั่วไปหมายถึงอินพุตหรือเอาต์พุตมาตรฐาน
  • หากระบุออปชันเดียวกันหลายครั้ง จะใช้ค่าครั้งสุดท้าย
  • ออปชันสามารถมีได้หลายค่า (-a 1 2 3 จะถูกประมวลผลเป็น [1,2,3])

ฟีเจอร์เพิ่มเติม

  • การนับออปชัน: -vvv จะตั้งค่า v = 3
  • การเพิ่มค่าออปชัน: -v 1 -v 2 จะตั้งค่า v = []int{1, 2}
  • ออปชันแบบบูลีน: --var คือเปิดใช้งาน และ --no-var คือปิดใช้งาน
  • ออปชันสามารถเป็นชนิดข้อมูลเชิงประกอบ เช่น struct, slice และ map ได้
  • ออปชันสามารถดึงค่ารายการ/พจนานุกรมจากแหล่งข้อมูล (เช่น SQL) ได้

1 ความคิดเห็น

 
haung921209 2025-03-26

เคยใช้ cobra มาก่อน แต่เมื่อเทียบกันแล้ว argp มีตัวเลือกให้ตั้งค่าสำหรับ flag ได้หลากหลายกว่านะครับ 555