"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحليل قيم متعددة في قائمة باستخدام العلامات المخصصة في Golang؟

كيف يمكنني تحليل قيم متعددة في قائمة باستخدام العلامات المخصصة في Golang؟

تم النشر بتاريخ 2024-12-22
تصفح:182

How can I parse multiple values into a list using custom flags in Golang?

علم مخصص للقوائم في 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 value3
go run your_file.go --list1 value1 --list1 value2 --list1 value3
سيتم ملء هذا المتغير myFlags بالقيم الثلاث المتوفرة: ["value1"، "value2"، "value3"]. يمكنك بعد ذلك الوصول إلى هذه القيم داخل برنامجك.

ساحة اللعبللحصول على مثال حي، يمكنك زيارة الملعب التالي: [رابط ساحة اللعب]

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3