พื้นฐาน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ