Go:
การอ่านอาร์กิวเมนต์จากคำสั่งลำดับ
อย่างไร:
Go ให้การเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งโดยตรงผ่านแพ็คเกจ os
โดยเฉพาะการใช้ os.Args
ซึ่งเป็นอาร์เรย์ของสตริง นี่คือตัวอย่างง่ายๆที่จะเริ่มต้น:
แพ็คเกจหลัก
นำเข้า (
"fmt"
"os"
)
func main() {
// os.Args ให้การเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งแบบดิบ
fmt.Println("อาร์กิวเมนต์บรรทัดคำสั่ง:", os.Args)
if len(os.Args) > 1 {
// วนซ้ำผ่านอาร์กิวเมนต์ ข้ามอันแรก (ชื่อโปรแกรม)
for i, arg := range os.Args[1:] {
fmt.Printf("อาร์กิวเมนต์ที่ %d: %s\n", i+1, arg)
}
} else {
fmt.Println("ไม่มีอาร์กิวเมนต์บรรทัดคำสั่งที่ให้มา.")
}
}
ตัวอย่างผลลัพธ์เมื่อเรียกใช้ด้วย go run yourprogram.go arg1 arg2
อาจจะดูเหมือนกับ:
อาร์กิวเมนต์บรรทัดคำสั่ง: [/tmp/go-build123456789/b001/exe/yourprogram arg1 arg2]
อาร์กิวเมนต์ที่ 1: arg1
อาร์กิวเมนต์ที่ 2: arg2
สิ่งนี้จะพิมพ์อาร์กิวเมนต์ทั้งหมดรวมทั้งชื่อโปรแกรม (มักจะอยู่ที่ดัชนีที่ 0) และจากนั้นจะวนซ้ำเพื่อพิมพ์อาร์กิวเมนต์ที่ให้มาทีละอัน สำหรับการแยกวิเคราะห์อาร์กิวเมนต์ได้อย่างมีทิศทางมากขึ้น คุณอาจพิจารณาใช้แพ็คเกจ flag
สำหรับการแยกวิเคราะห์ตัวเลือกบรรทัดคำสั่ง
ลึกลงไป
โดยประวัติศาสตร์ การเข้าถึงอาร์กิวเมนต์บรรทัดคำสั่งเป็นปฏิบัติการเก่าแก่เท่ากับการเขียนโปรแกรมภาษา C ที่ใช้ argc
และ argv[]
ในวัตถุประสงค์ที่เหมือนกัน ใน Go, os.Args
ทำให้สามารถทำได้ง่ายแต่เ purposely rudimentary สำหรับสถานการณ์ที่ซับซ้อนยิ่งขึ้น เช่น การจัดการธงหรือตัวเลือก Go เสนอแพ็คเกจ flag
ซึ่งให้ความสามารถในการแยกวิเคราะห์อย่างเข็มข้น ซึ่งอาจถือว่าเป็นทางเลือกที่ “ดีกว่า” เมื่อแอปพลิเคชั่นของคุณต้องการมากกว่าเพียงแค่อาร์กิวเมนต์ตามตำแหน่ง
ไม่เหมือนกับภาษาสคริปบางภาษาที่ให้การแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่งเข้าไปในอาร์เรย์สมาคมหรือวัตถุโดยอัตโนมัติ วิธีการของ Go ต้องการให้โปรแกรมเมอร์จัดการการแยกวิเคราะห์ด้วยตัวเองโดยใช้ os.Args
สำหรับความต้องการพื้นฐาน หรือใช้แพ็คเกจ flag
สำหรับสถานการณ์ที่ซับซ้อนขึ้น การออกแบบนี้สะท้อนถึงปรัชญาของ Go ที่รักษาให้ภาษาหลักง่าย ขณะที่ให้ไลบรารีมาตรฐานทรงพลังสำหรับงานทั่วไป แม้ว่ามันอาจนำเข้าสู่การเรียนรู้ที่มีหน่อยสำหรับผู้ที่คุ้นเคยกับการแยกวิเคราะห์ในตัว แต่มันก็เสนอความยืดหยุ่นมากขึ้นและส่งเสริมให้มีความเข้าใจเชิงลึกรายละเอียดในการจัดการอาร์กิวเมนต์บรรทัดคำสั่ง