سؤال

أنا أتعلم لغة جوجل الجديدة اذهب. وبعد أنا فقط أحاول الاشياء ولاحظت أنه إذا كنت تعلن متغيرا ولا تفعل أي شيء مع مترجم الذهاب (8G. في حالتي) فشل في
ترجمة بهذا الخطأ: hello.go:9: error declared and not used. وبعد لقد سخرت في هذا نظرا لأن معظم محامرة اللغة فقط حذر أنت حول المتغيرات غير المستخدمة ولكن لا تزال تجميعها.

هل هناك على أي حال يمكنني الحصول على هذا؟ راجعت الوثائق للمترجم ولا أرى أي شيء من شأنه تغيير هذا السلوك. هل هناك طريقة لحذفها فقط error بحيث هذا سوف يترجم؟

package main

import "fmt"
import "os"

func main()
{
     fmt.Printf("Hello World\n");
     cwd, error := os.Getwd();
     fmt.Printf(cwd);
}
هل كانت مفيدة؟

المحلول

يمكنك تجربة هذا:

cwd, _ := os.Getwd();

ولكن يبدو أنه سيكون من الأفضل الحفاظ على الخطأ في إجابة جانبية حتى تعرف ما إذا كان هناك خطأ ما.

نصائح أخرى

هذا يمكن أن يجعل التنمية قليلا من الألم. أحيانا أقوم بتشغيل التعليمات البرمجية التي تم الإعلان عن المتغيرات ولكنها غير مستعملة (ولكن إرادة يستخدم).

في هذه الحالات أنا بسيط القيام بذلك:

FMT.PRINTF ("٪ V٪ V٪ V"، Somevar1، Somevar2، Somevar3)

وهناك، هم "مستعملون".

أود أن أرى علم لأدوات الذهاب التي تتيح لي أن قمع هذا الخطأ أثناء التطوير.

هل هذا فعال؟

cwd, error := os.Getwd();
if error == nil {
    fmt.Printf(cwd);
}

يمكنك معرفة الخطأ ما هو استيراد "FMT" واستخدام

cwd, err := os.Getwd();
if err != nil {
    fmt.Printf("Error from Getwd: %s\n", err)
}

ماذا طباعت؟

إذا كنت تريد حقا إزالة خطأ الترجمة، فيمكنك تجربة شيء مثل "A = A" أو "خطأ = خطأ".

الحجج القادمة من بعض الناس هنا، تفيد بأن مثل هذه الأخطاء الترجمة كبيرة لأنها تمنع الكثير من Cruft صحيح بالنسبة لمعظم الوضع، لذلك يجب عليك تجنب مثل هذه البنيات. على الجانب الآخر، أحب الاختبار، سواء أكتب التعليمات البرمجية التي أكتبها فعلا! وفي هذه الحالة، من الجيد، وليس الاضطرار إلى إزالة جميع المتغيرات المعلنة وغير المستخدمة. لذلك استخدم "A = A" نادرا ما لا تتركها هناك!

كان لدي نفس الوضع مثلك. من مستندات:

هل يمكنني إيقاف هذه الشكاوى حول متغير / استيراد بلدي غير المستخدم؟

قد يشير وجود متغير غير مستخدم إلى وجود خطأ، في حين أن الواردات غير المستخدمة فقط تبطئ تجميع. تتراكم ما يكفي من الواردات غير المستخدمة في شجرة الكود وأشياء يمكن أن تصبح بطيئة للغاية. لهذه الأسباب، تذهب لا يسمح بأي شيء.

عند تطوير التعليمات البرمجية، من الشائع إنشاء هذه المواقف مؤقتا ويمكن أن تكون مزعجة لتعديلها قبل أن تجميع البرنامج.

طلب البعض خيار مترجم لتحويل تلك الشيكات أو تقليلها على الأقل إلى التحذيرات. لم تتم إضافة خيار مثل هذا الخيار، لأن خيارات التحويل البرمجي يجب ألا تؤثر على دلالات اللغة ولأن GO Compiler لا يبلغ عن التحذيرات، إلا أن الأخطاء التي تمنع الترجمة فقط.

هناك سببان لعدم وجود تحذيرات. أولا، إذا كان الأمر يستحق الشكوى حول، فإن الأمر يستحق تحديده في التعليمات البرمجية. (وإذا لم يكن الأمر يستحق تحديده، فليس من الجدير بالذكر.) في المرتبة الثانية بعد أن تشجع تحذيرات التحويل البرمجي على تنفيذ الحالات الضعيفة التي يمكن أن تجعل تجميعها صاخبة وإخفاء أخطاء حقيقية ينبغي أن تكون ثابتة.

من السهل معالجة الوضع، رغم ذلك. استخدم المعرف الفارغ للسماح للأشياء غير المستخدمة أثناء التطور.

import "unused"

// This declaration marks the import as used by referencing an
// item from the package.
var _ = unused.Item  // TODO: Delete before committing!

func main() {
    debugData := debug.Profile()
    _ = debugData // Used only during debugging.
    ....
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top