علم مخصص للقوائم في Golang
تسمح حزمة علم Golang بتحليل الوسيطة بسهولة، ولكنها تدعم عادة الأنواع الأساسية مثل السلسلة، والعدد الصحيح، أو منطقية. قد يبدو هذا مقيدًا عند العمل مع قوائم القيم.يسمح Golang بإنشاء علامات مخصصة من خلال تنفيذ واجهة flag.Value. تتطلب هذه الواجهة تنفيذ طريقتين: String() وSet(). من خلال تحديد علامة مخصصة للقوائم، يمكنك تمكين تحليل القيم المتعددة التي يتم تمريرها من خلال علامات سطر الأوامر.
تحديد علامة قائمة مخصصة
خذ بعين الاعتبار المثال التالي :الحزمة الرئيسية استيراد "العلم" استيراد "اف ام تي" اكتب arrayFlags []string // String() تنفذ واجهة flag.Value func (i *arrayFlags) String() string { إرجاع fmt.Sprintf("%v"، *i) } // Set() ينفذ واجهة flag.Value func (i *arrayFlags) خطأ في تعيين (سلسلة القيمة) { *i = إلحاق(*i، القيمة) العودة لا شيء } فار myFlags arrayFlags الوظيفة الرئيسية () { flag.Var(&myFlags, "list1"، "بعض الوصف لهذه المعلمة.") علم. تحليل () fmt.Println(myFlags)package main import "flag" import "fmt" type arrayFlags []string // String() implements the flag.Value interface func (i *arrayFlags) String() string { return fmt.Sprintf("%v", *i) } // Set() implements the flag.Value interface func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil } var myFlags arrayFlags func main() { flag.Var(&myFlags, "list1", "Some description for this param.") flag.Parse() fmt.Println(myFlags) }يحدد هذا نوع علامة مخصص يسمى arrayFlags الذي يقبل قيمًا متعددة. ترتبط العلامة باسم العلم "list1" ويمكن تحليلها باستخدام flag.Parse().
Usage
لتمرير قيم متعددة باستخدام هذه العلامة المخصصة، يمكنك تشغيل البرنامج على النحو التالي:اذهب إلى تشغيل your_file.go --list1 value1 --list1 value2 --list1 value3go run your_file.go --list1 value1 --list1 value2 --list1 value3سيتم ملء هذا المتغير myFlags بالقيم الثلاث المتوفرة: ["value1"، "value2"، "value3"]. يمكنك بعد ذلك الوصول إلى هذه القيم داخل برنامجك.
ساحة اللعبللحصول على مثال حي، يمكنك زيارة الملعب التالي: [رابط ساحة اللعب]
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3