سؤال
هل يمكن لأي شخص أن يفسر الأعلام في الذهاب؟
flag.Parse()
var omitNewline = flag.Bool("n", false, "don't print final newline")
المحلول
يرى http://golang.org/pkg/flag/ للحصول على وصف كامل.
حجج flag.bool هي (سلسلة اسم، قيمة BOOL، سلسلة الاستخدام)
الاسم هو الحجة للبحث عنها، والقيمة هي القيمة الافتراضية والاستخدام يصف غرض العلم للحصول على وسيطة -HELP أو مشابه، ويتم عرضه مع العلم. USDAGE ().
لمزيد من الأمثلة التفصيلية هنا
نصائح أخرى
flag
يستخدم لتحليل وسيطات سطر الأوامر. إذا قمت بتمرير "-n" كوسيطة سطر الأوامر، فسيتم تعيين OmitNewline إلى True. وأوضح قليلا في البرنامج التعليمي:
بعد استيراد حزمة العلم، يقوم السطر 12 بإنشاء متغير عالمي لعقد قيمة علامة Echo's -n. المتغير Omitnewline له نوع * BOOL، مؤشر إلى BOOL.
أعلام هي وسيلة شائعة لتحديد خيارات لبرامج سطر الأوامر.
package main
import (
"flag"
"fmt"
)
var (
env *string
port *int
)
// Basic flag declarations are available for string, integer, and boolean options.
func init() {
env = flag.String("env", "development", "a string")
port = flag.Int("port", 3000, "an int")
}
func main() {
// Once all flags are declared, call flag.Parse() to execute the command-line parsing.
flag.Parse()
// Here we’ll just dump out the parsed options and any trailing positional
// arguments. Note that we need to dereference the points with e.g. *evn to
// get the actual option values.
fmt.Println("env:", *env)
fmt.Println("port:", *port)
}
تشغيل البرامج:
go run main.go
جرب برنامج التشغيل عن طريق إعطائه أولا بدون أعلام. لاحظ أنه إذا حذفت الأعلام، فإنهم يأخذون تلقائيا قيمهم الافتراضية.
go run command-line-flags.go --env production --port 2000
إذا قمت بتوفير علامة مع قيمة محددة، فسوف يقوم الافتراضي بالكتابة فوق واحد.