CodeBlanks Logo Icon CodeBlanks

flag paketi

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

main.go
package main

import (
    "flag"
    "fmt"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
port := flag.Int("port", 8080, "port")
flag.____()
fmt.Println(*port)
Cevap
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

Orta seviye bölümündeki tüm dersler