0Pricing
Go Academy · บทเรียน

พื้นฐาน Cobra

คำสั่งราก Run, Args และการสร้างความช่วยเหลือ

พื้นฐาน Cobra เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

Cobra คืออะไร

Cobra เป็นไลบรารียอดนิยมสำหรับสร้างแอปพลิเคชัน CLI ด้วย Go โดยมีคำสั่ง แฟล็ก คำสั่งย่อย การสร้างวิธีใช้ การเติมคำสั่งในเชลล์ และการตรวจสอบอาร์กิวเมนต์

การติดตั้ง Cobra

เพิ่ม cobra เป็นสิ่งที่ต้องพึ่งพา และเลือกใช้เครื่องมือสร้าง CLI ได้:

go get github.com/spf13/cobra
// Optional: cobra-cli for scaffolding
go install github.com/spf13/cobra-cli@latest
cobra-cli init myapp

คำสั่งราก

แอป Cobra ทุกแอปมีคำสั่งราก กำหนดคำสั่งนี้ด้วยชื่อคำสั่ง คำอธิบายสั้น และฟังก์ชันสำหรับเรียกใช้:

var rootCmd = &cobra.Command{
    Use:   "myapp",
    Short: "My awesome CLI",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("Hello from root!")
    },
}
func main() { rootCmd.Execute() }

โครงสร้าง cobra.Command

ฟิลด์สำคัญ: Use (ชื่อคำสั่งและสรุปย่อ), Short (คำอธิบายหนึ่งบรรทัด), Long (วิธีใช้โดยละเอียด), Run (เรียกใช้คำสั่ง), RunE (ส่งคืนข้อผิดพลาด)

ใช้ RunE เพื่อส่งต่อข้อผิดพลาด

ใช้ RunE แทน Run เพื่อส่งคืนข้อผิดพลาด Cobra จะแสดงข้อผิดพลาดและออกด้วยรหัสที่ไม่ใช่ศูนย์โดยอัตโนมัติ

var rootCmd = &cobra.Command{
    RunE: func(cmd *cobra.Command, args []string) error {
        return doWork()
    },
}

การเพิ่มคำสั่งย่อย

สร้างคำสั่งย่อยเป็นค่า cobra.Command แยกกัน แล้วเพิ่มลงในคำสั่งรากด้วย AddCommand:

var serveCmd = &cobra.Command{
    Use:   "serve",
    Short: "Start the server",
    RunE:  runServe,
}
func init() { rootCmd.AddCommand(serveCmd) }

โครงสร้างโปรเจกต์ Cobra

โครงสร้างที่ใช้กันทั่วไป: ไดเรกทอรี cmd/ ที่มีหนึ่งไฟล์ต่อคำสั่งย่อย และมี root.go เพิ่มเติม ส่วน main.go เรียกใช้เพียง cmd.Execute()

cmd/
  root.go    // rootCmd definition
  serve.go   // serveCmd
  migrate.go // migrateCmd
main.go

การตรวจสอบอาร์กิวเมนต์

ใช้ตัวตรวจสอบในตัว เช่น cobra.ExactArgs, MinimumNArgs หรือ ValidArgsFunction ที่กำหนดเอง:

var cmd = &cobra.Command{
    Args: cobra.ExactArgs(2),
    RunE: func(cmd *cobra.Command, args []string) error {
        fmt.Println(args[0], args[1])
        return nil
    },
}

วิธีใช้ที่สร้างโดยอัตโนมัติ

Cobra สร้าง --help / -h สำหรับทุกคำสั่ง และสร้างคำสั่งย่อย help โดยอัตโนมัติ ข้อความจะมาจากชื่อคำสั่ง คำอธิบายสั้น คำอธิบายโดยละเอียด และแฟล็ก

การเติมคำสั่งในเชลล์

Cobra สร้างสคริปต์เติมคำสั่งสำหรับ bash, zsh, fish และ PowerShell ให้พร้อมใช้งานทันทีผ่าน rootCmd.GenBashCompletion หรือคำสั่งย่อย completion ในตัว

การผสานรวมกับ Viper

ใช้ Cobra ร่วมกับ Viper เพื่อจัดการการตั้งค่า: แฟล็กที่กำหนดด้วย Cobra จะเชื่อมกับคีย์ของ Viper ดังนั้นค่าจึงมาจากแฟล็ก ตัวแปรสภาพแวดล้อม หรือไฟล์การตั้งค่าได้

ตรวจสอบอย่างรวดเร็ว

cobra.Command.Run และ RunE แตกต่างกันอย่างไร

สรุป: พื้นฐานของ Cobra

ประเด็นสำคัญ:

  • cobra.Command ที่มี Use/Short/RunE เป็นองค์ประกอบหลัก
  • ใช้ rootCmd.AddCommand(subCmd) สำหรับคำสั่งแบบลำดับชั้น
  • ใช้ cobra.ExactArgs/MinimumNArgs เพื่อตรวจสอบอาร์กิวเมนต์
  • สร้างวิธีใช้และการเติมคำสั่งโดยอัตโนมัติ

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน Cobra” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน Cobra” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน Cobra”

คำสั่งราก Run, Args และการสร้างความช่วยเหลือ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน Cobra” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Cobra
  2. แฟล็กและแฟล็กถาวร
  3. คำสั่งย่อยและกลุ่มคำสั่ง
  4. การเผยแพร่เครื่องมือ CLI
← กลับไปที่ Go Academy