Skip to content

flag

แพ็กเกจ Flag ในตัวภาษา Go ดำเนินการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง ทำให้การพัฒนาเครื่องมือบรรทัดคำสั่งง่ายขึ้น

การนำเข้า

go
import flag

ประเภท

ประเภทที่รองรับมีดังนี้

  • bool
  • int
  • int64
  • uint
  • uint64
  • float
  • float64
  • string
  • duration

การกำหนด

ใช้ flag.Type() เพื่อกำหนด ค่าที่ส่งกลับคือพอยน์เตอร์

go
name := flag.String("name", "张三", "ชื่อ")
age := flag.Int("age", 15, "อายุ")
sex := flag.Bool("sex", true, "เพศ")

หรือใช้ flag.TypeVar() เพื่อกำหนด

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "ชื่อ")
flag.IntVar(&age, "age", 15, "อายุ")
flag.BoolVar(&sex, "sex", true, "เพศ")

การแยกวิเคราะห์

เรียก flag.Parse() เพื่อแยกวิเคราะห์พารามิเตอร์ รูปแบบอาร์กิวเมนต์บรรทัดคำสั่งที่รองรับมีดังนี้

  • -flag xxx
  • --flag xxx
  • -flag=xxx
  • --flag=xxx

พารามิเตอร์ประเภท布尔ต้องใช้เครื่องหมายเท่ากับ การแยกวิเคราะห์ Flag จะหยุดก่อนพารามิเตอร์บรรทัดคำสั่งที่ไม่ใช่ตัวแรก

อื่นๆ

go
func Args() []string //ส่งคืนพารามิเตอร์ที่ไม่ใช่คำสั่งทั้งหมด

func NArg() int //ส่งคืนจำนวนพารามิเตอร์ที่ไม่ใช่บรรทัดคำสั่ง

func NFlag() int //ส่งคืนจำนวนพารามิเตอร์บรรทัดคำสั่ง

ตัวอย่าง

go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "ชื่อ")
flag.IntVar(&age, "age", 15, "อายุ")
flag.BoolVar(&sex, "sex", true, "เพศ")

flag.Parse()
fmt.Println(name, age, sex)

คอมไพล์แล้วเริ่มโปรแกรมในบรรทัดคำสั่ง

powershell
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe
张三 15 true
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -h
Usage of D:\WorkSpace\Code\GoProject\bin\go_build_GoProject_src_main.exe:
  -age int
        อายุ (default 15)
  -name string
        ชื่อ (default "张三")
  -sex
        เพศ (default true)
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -age 15 -name "李四" -sex=false
李四 15 false
PS D:\WorkSpace\Code\GoProject\bin>

Golang by www.golangdev.cn edit