flag paketi
- Go kursu
- Orta seviye
- Ders 71/80
- 4 dk
flag paketinin temelini öğrenirsin.
flag paketi
flag paketi komut satırı seçeneklerini (-port=8080, -v) ayrıştırır ve otomatik yardım metni üretir:
port := flag.Int("port", 8080, "dinlenecek port")
ayrintili := flag.Bool("v", false, "ayrıntılı çıktı")
flag.Parse()
fmt.Println(*port, *ayrintili)./app -h çalıştırıldığında tüm seçenekler açıklamaları ve varsayılan değerleriyle listelenir.
Bool seçenek tuzağı
Bool seçenekler değerini boşlukla almaz: -v false yazarsan -v true olur, false ise konumsal argüman sayılır. Kapatmak için -v=false yazılmalıdır. Ayrıca ayrıştırma ilk konumsal argümanda durur: app dosya.txt -v komutunda -v bir seçenek olarak görülmez.
Uygulama FlagSet ile ayrıştır
fs := flag.NewFlagSet("app", flag.ContinueOnError) oluştur; port (int, varsayılan 8080) ve v (bool) seçeneklerini tanımla. fs.Parse([]string{"-port=9000", "-v"}) çağırıp iki değeri yazdır.
Başlangıç kodu
package main
import (
"flag"
"fmt"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"flag"
"fmt"
)
func main() {
fs := flag.NewFlagSet("app", flag.ContinueOnError)
port := fs.Int("port", 8080, "dinlenecek port")
v := fs.Bool("v", false, "ayrıntılı çıktı")
if err := fs.Parse([]string{"-port=9000", "-v"}); err != nil {
fmt.Println(err)
return
}
fmt.Println(*port, *v)
}Beklenen çıktı
9000 true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>-port 9000</code>, <code>-port=9000</code> ve <code>--port=9000</code> için flag paketi ne yapar?
- Yalnızca -port=9000
- Yalnızca --port=9000
- Hiçbirini
- Üçünü de kabul eder Doğru cevap
Açıklama: flag paketi tek ve çift tireyi aynı kabul eder; bool olmayan seçeneklerde değer boşlukla ya da = ile verilebilir.
2 Ayrıştır
port := flag.Int("port", 8080, "port")
flag.____()
fmt.Println(*port)
port := flag.Int("port", 8080, "port")
flag.Parse()
fmt.Println(*port)
Açıklama: flag.Parse os.Args'ı okuyup tanımlı seçenekleri doldurur.
3 Komut satırı
| Kavram | Anlamı |
|---|---|
-port=9000 |
Değerli seçenek |
-v |
Bool seçenek |
-v=false |
Bool'u kapatma |
-h |
Yardım metni |