Dalam bahasa Go, parameter baris arahan ialah cara yang sangat penting untuk menghantar input kepada program dan menentukan tingkah laku masa jalan. Go menyediakan pustaka standard flag
untuk menghuraikan parameter baris arahan Artikel ini akan memperkenalkan cara menggunakan parameter baris arahan dalam Go.
Parameter baris arahan ialah parameter yang dihantar kepada program melalui baris arahan apabila program sedang dijalankan ia sedang berjalan. Contohnya, perintah ls
dalam Linux boleh menerima berbilang parameter baris perintah, seperti -l
untuk menyenaraikan maklumat terperinci, -a
untuk memaparkan fail tersembunyi, dsb.
Dalam Go, kita boleh menggunakan os.Args
untuk mendapatkan semua parameter baris arahan diluluskan apabila program dijalankan. os.Args
ialah kepingan rentetan, elemen pertama ialah nama program dan elemen berikut ialah parameter baris arahan. Contohnya:
package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) }
Jalankan atur cara dan masukkan dua parameter hello
dan world
:
$ go run main.go hello world
Hasil keluaran:
[/tmp/go-build3065006307/b001/exe/main hello world]
Anda boleh lihat, os.Args
Mengandungi nama program dan dua parameter baris arahan.
Walaupun kita boleh mendapatkan semua parameter baris arahan melalui os.Args
, dalam pembangunan sebenar, cara yang lebih fleksibel untuk menghuraikan arahan biasanya digunakan parameter baris. Pustaka standard Go menyediakan pakej flag
untuk menghuraikan argumen baris arahan. Pakej
flag
menyediakan tiga jenis parameter baris arahan: boolean, rentetan dan integer. Ketiga-tiga parameter ini boleh ditakrifkan masing-masing melalui flag.Bool()
, flag.String()
dan flag.Int()
.
Berikut ialah contoh mudah yang mentakrifkan boolean dan parameter baris arahan rentetan:
package main import ( "flag" "fmt" ) func main() { // 定义命令行参数 var ( isVerbose bool name string ) flag.BoolVar(&isVerbose, "v", false, "verbose") flag.StringVar(&name, "name", "", "name of the user") // 解析命令行参数 flag.Parse() // 输出命令行参数 fmt.Printf("isVerbose=%v, name=%s ", isVerbose, name) }
Dalam contoh di atas, kami menggunakan flag.BoolVar()
dan flag.StringVar()
masing-masing Mentakrifkan boolean dan a parameter baris arahan rentetan. Kedua-dua fungsi ini mempunyai empat parameter:
flag.Parse()
Jalankan program dan masukkan dua parameter baris arahan
: -v
$ go run main.go -v -name=Alice
-name="Alice"
Hasil keluaran: isVerbose=true, name=Alice
Kita boleh lihat,
Pakej boleh menghuraikan parameter baris arahan dengan mudah dan menyimpan nilai ke dalam pembolehubah yang sepadan.flag
Parameter baris arahan tersuai
flag
Sebagai contoh, kami boleh menentukan parameter baris arahan jenis kotak lungsur untuk membenarkan pengguna memilih satu daripada beberapa pilihan:
package main import ( "fmt" "github.com/AlecAivazis/survey/v2" ) func main() { // 定义下拉框选项 options := []string{"red", "blue", "green"} // 定义命令行参数 var color string prompt := &survey.Select{ Message: "Pick a color:", Options: options, } survey.AskOne(prompt, &color) // 输出命令行参数 fmt.Printf("color=%s ", color) }
Dalam contoh di atas, kami menggunakan perpustakaan pihak ketiga
Pilihan kotak lungsur ditakrifkan. Kemudian, gunakan fungsi untuk memaparkan kotak lungsur dan biarkan pengguna memilihnya. github.com/AlecAivazis/survey/v2
survey.AskOne()
Jalankan program:
$ go run main.go
Hasil output:
? Pick a color: ▸ red blue green Answer: red color=red
Kita dapat melihat bahawa pengguna boleh memilih warna daripada beberapa pilihan dan menyimpan nilai yang dipilih dalam
dalam pembolehubah.color
Ringkasan
atau kaedah tersuai untuk menghuraikan parameter baris arahan. Menggunakan parameter baris arahan boleh menjadikan program kami lebih fleksibel dan lebih mudah untuk digunakan, dan juga merupakan kemahiran yang diperlukan untuk menulis alatan baris arahan berkualiti tinggi. os.Args
Atas ialah kandungan terperinci Bagaimana untuk menggunakan argumen baris arahan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!