المقالة السابقة: الخوف من البساطة ربما تكون نوعًا أو عشرات المرات كل أسبوع دون التفكير بشكل كبير حول ما يحدث تحت القفص. على سطحه، هذه الأوامر تشعر قليلاً بالغرابة: يمكنك الضغط على Enter، وبطبيعة الحال يتم تجميع الكود الخاص بك، والاتصال، و - في بعض الأحيان - تنفيذها. ولكن تحت هذا البساطة يقع نظام مصممة بعناية، تم تحسينه لتحسين حياتك كمدير، في حين أنه سريع وسرعة متوقعة للآلات. go build go run فهم كيف يعمل Go على بناء، تشغيل، وتخزين الكود ليس مجرد ممارسة أكاديمية. يفسّر ذلك لماذا تظهر البناءات المتزايدة بسرعة كبيرة، لماذا تتصرف أنابيب CI بشكل مستمر، ولماذا في بعض الأحيان يمكن أن يسبب التغيير المفاجئ إعادة تدوير كاملة. في النهاية ، سوف يكون لديك صورة واضحة من: كيف يحدد Go التوازنات والهياكل الكود الخاص بك إلى البطاقات كيفية تجميع وتجميع العمل خلف الجدران، لماذا تعتبر الهواتف الذكية أكثر موثوقية و ما الذي يحدث في الواقع عندما تكتب go build أو go run. إذا كان لديك أيضًا سؤال حول سبب بناء Go "العمل فقط" أو لماذا يبدو أن الأقراص الثنائية تقريبًا عابرة، وهذا هو الغوص العميق الذي يتصل بالطرق - للإنسان والآلات على حد سواء. go run نموذج Go Toolchain في النظرة الأولى، ، و و تبدو كأوامر منفصلة، كل منها مع سلوكها الخاص.في الواقع، هم مجرد محطات كل إجراء Go يمر من خلال سلسلة قابلة للتنبؤ: يلعبها البرامج، يلغي التوازنات في البطاقات، ويقوم بتجميع البطاقات، وبالتالي يرتبط بها إلى إجراء، وفي بعض الأحيان يقوم بتنفيذ النتيجة. ليس ميكانيكا لإنشاءها. go build go run go test same underlying pipeline what happens to the final artifact فهي المفهوم الرئيسي لتنظيم يتم معالجة كل ملف .go في البطاقة بشكل مشترك ، و البطاقة نفسها هي الوحدات التي تقوم بتجميع وتطوير مسار الكاشف. Go builds packages, not individual files تعديل أي ملف واحد في حزمة يمكن أن تسبب إعادة بناء الحزمة بأكملها. أصبحت البطاقات الحدود الطبيعية للبساطة والتجميع المباشر. تتزايد التكلفة الصغيرة والمتوسطة بشكل أفضل في قواعد الكود الكبيرة لأن الكمبيوتر يمكن أن يستخدم المزيد من النتائج المضغوطة. يبدو أن الطائرات بسيطة بشكل مفهوم، لكنها متقدمة بشكل كبير: تعرف Go بالضبط ما يحتاج إلى تجميع وتستطيع الاستخدام مرة أخرى، وهذا هو السبب في أن البناءات المتزايدة تشعر بالقلق تقريباً. : يتكامل مع تجميع، الاتصال، التخزين والتنفيذ حتى لا تحتاج إلى التفكير في التفاصيل. و يتوقف عن شعور مثل السحر ويبدأ في خلق معنى متوقع. smart coordinator go build go run من 2 خطة بناء أود.mod أود.mod قبل أن تصل Go إلى ملفات المصدر الخاصة بك ، تحتاج إلى معرفة ما يجب إنشاءه وفي أي ترتيب. و هذه الملفات تحدد ، وهو شجرة التوازن الكامل لمشروعك ، جنبا إلى جنب مع إصدارات دقيقة لكل عنصر.من خلال قراءة هذه الملفات ، يعرف سلسلة الأدوات Go بالضبط ما هي البطاقات التي هي جزء من إنشاءك وما هي الكود الخارجي للتحقق والتحقق وإدماجها. go.mod go.sum module graph بمجرد تحميل جدول الفيديو ، يقوم Go بتقييم كل بطاقة لتحديد مجموعة مصدرها ، وهذا يشمل كل ملف .go الذي يشمل البطاقة ، وتقوم بتقسيمها بواسطة علامات البناء ، نظام التشغيل ، الهيكل ، و أي قيود تم تحديدها. فقط بعد هذا التقييم يعرف الكود الذي يحتاج فعلاً إلى معالجة. يتم تشغيل الأوامر على أجهزتنا المختلفة لإنتاج نتائج واضحة ، مع الاعتراف بأنها تعتمد على نفس الإصدارات من الوحدات. go build أحد أهم جوانب العملية الحديثة هو دور المادة في هذه الإرشادات تعلن عن النسخة الأدنى من Go التي تم تصميمها لـ Module.It يؤثر على العديد من خصائص Build: اللغة التعبيرية، وممارسة الكمبيوتر، وحتى تحليل سحيق. يمكن أن تختلف القياسات، واللغات السليمة، وممارسة الكمبيوتر، والتحكمات - يضيف سلسلة الأدوات هذه خلال تكوين. go go.mod go في نهاية هذه المرحلة، يمتلك سلسلة الأدوات تعلم ما هي البطاقات التي يجب إعدادها ، في أي سلسلة ، وما الملفات التي تنتمي إلى كل البطاقة ، مع هذه المعلومات في يدك ، تتحرك إلى الخطوة التالية : إعداد البطاقات وتتصل بها إلى البطاقات الثنائية ، بالتأكد من أن لا شيء سيخسر أو سيخسر. complete, ordered build plan التخطيط والاتصال في الممارسة بمجرد الحصول على خطة بناء من نظام الموديل، تبدأ Go في تحويل رمزك إلى شيء يمكن القيام به. وهذا يحدث في مرحلة منفصلة: جمعية ومصالحة.فهم هذه المرحلة هو مفتاح لتعرف لماذا تكون بناءات Go سريعة ومحددة ومتناسقة. الكمبيوتر هو Per-Package قم بتجميع يتم التعامل مع كل حزمة - سواء كانت جزءًا من المشروع أو علاقة خارجية - كواحدة مستقلة. هذا يعني أنه إذا لم يتم تغيير البطاقة منذ البناء الأخير، يمكنك إلغاء إعادة تجميعها بالكامل، حتى إذا تم إعادة بناء البطاقات الأخرى التي تعتمد عليها. one package at a time intermediate artifacts التوازن هو مزايا أخرى لهذا النهج لكل حزمة: نظراً لأن الكمبيوتر يعرف جدول التوازن، فإنه يمكن جمع العديد من البطاقات المستقلة في وقت واحد، وذلك باستخدام الكمبيوتر المتعدد الأساسيات بشكل كامل. الرابطة هي اختيارية هو عملية جمع البطاقات المتكاملة إلى إجراء واحد. لا يزال البطاقات في المكتبة متصلة بنفسها، ولكنها موجودة فقط كأشياء يمكن استخدامها مرة أخرى للبطاقات الأخرى. على مشروع ، يمكن أن تجمع Go عشرات البطاقات ، ولكن إنتاج صفر البطاقات إذا لم يكن أي من البطاقات الرئيسية! الرابط only links main packages into binaries go build ./... غالبًا ما تكون الروابط هي الخطوة الأكثر تكلفة في بناء لأنها تتطلب جمع جميع التوازنات إلى إجراء واحد، وتحديد النماذج، وإدراج البيانات المضغوطة.من خلال الحفاظ على الروابط اختيارية، وتعتمد على جمع البطاقات المتحركة، لا تزال الروابط فعالة. ما الذي ينبغي أن ينتهي في Binary الفوركس الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيار. جميع البطاقات المرتبطة التي يمكن الوصول إليها من الرئيسية إنشاء البيانات الممتازة، بما في ذلك نسخة الموديل والمعلومات المتعلقة الإرشادات على المستوى الآلي المتقدمة على منصة الهدف هذا التكامل هو السبب في أن Go binaries هي ذاتية التعبير والتكرار: أنها تشمل كل ما تحتاجه لبدء التشغيل دون اعتماد على المكتبات الخارجية أو بيئات التحويل. من وجهة نظر الإنسان، هذا يجعل التطوير سهلًا. من وجهة نظر الآلة، يمكن لـ Build System التحقق من كل شيء وتخزينها بشكل فعال، مما يضمن أن تمثيلات متكررة سريعة ومحددة. تحميل فيلم Build Cache: The Center of Gravity في قلب سرعة ووقاية Go هو يتم تخزين كل البطاقة المعدلة، وكل العناصر المتوسطة، وحتى بعض النتائج من الأدوات في خزانة مجهولة المحتوى، مما يتيح لل Go لاستخدام العمل عبر البناءات، والتوجيهات، وحتى فهم كيف يعمل الكاميرا المحمولة أمر حيوي لتفهم لماذا تشغيل Go يشعر بالفعل على الفور، حتى بالنسبة للمشاريع الكبيرة. build cache go run ماذا يشتري المتاجر يعتبر Build Cache أكثر من مجرد بيانات ثنائية مختلطة، ويشمل: أدوات البطاقة المشتركة (ملفات .a) لجميع البطاقات في جدول إنشاء نتائج الاختبار، بما في ذلك معلومات النجاح المتحركة منتجات أدوات مؤقتة اللازمة لإنجازها بواسطة go run أو go test يعيش الكاميرا على الكمبيوتر (بالتحديد في وهذا يعني أن نفس البطاقة التي يتم جمعها مع نفس الملفات سوف تنتج دائمًا نفس الملفات المزدوجة، وهذا يضمن أن تكرار البناء، أو البناء على آلات مختلفة، سوف تنتج نفس النتائج. $GOCACHE المستند إلى المحتوى وليس أساساً في الوقت على عكس أنظمة بناء التقليدية التي تعتمد على الملفات الزمنية ، تستخدم يتم تحديد المفاتيح الخلفية كل مفاتيح الخلفية هي وظيفة من: content-based hashing محتوى رمز المصدر نسخة compiler إنشاء أسطوانات منصة الهدف (GOOS / GOARCH) المتغيرات البيئية ذات الصلة هذا التصميم يضمن أن البناءات قابلة للتكرار وتجنب إخفاقات الكاميرا الخاطئة بسبب التغييرات غير ضرورية مثل العلامات الزمنية أو الترتيب الملف. إلغاء إلغاء إلغاء الإلزام حتى مع المفاتيح القابلة للتخزين، سيقوم Go في بعض الأحيان بتعديل البطاقات. تعديل الكود أو بناء علامات تغيير علامات الكمبيوتر أو المتغيرات البيئية إعادة تسمية الملفات داخل حزمة نظام Go's Caching هو ذكي: فإنه يمكّن فقط من إعادة بناء ما يحتاج فعلاً إلى إعادة بناء. حتى التغييرات الصغيرة غير السامية يمكن أن تؤدي إلى إعادة تدوير إذا كانت تؤثر على إعادة تدوير البطاقة، ولكن في غير ذلك، يتم الثقة بالبطاقة الذاتية. لماذا القفل آمن للثقة تم تصميم المفاتيح البناءة لكونها شفافة وموثوقة: غالباً ما تحتاج إلى إزالةها يدويًا إعادة بناء من البداية تنتج العناصر الذكية نفسها اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب، اذهب هذا هو السبب في أن البناءات المتسارعة في Go هي سريعة جداً: لا يعمل الكمبيوتر أبداً أكثر من الضروري. من وجهة نظر المطور، يبدو ذلك جاداً. من وجهة نظر الأنظمة، إنه ببساطة خطوط متكاملة تتعامل مع العناصر البلاستيكية كواحدة من المواطنين. • إنتاج الأدوات اذهب إلى بناء اذهب إلى بناء إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال فهم ما في الواقع، يساعدك على تحديد سلوكها وتجنب الاضطرابات المعتادة. compile packages, link them if necessary, and produce a binary that is correct and reproducible go build كيفية بناء بطاقات Handles عندما تتحرك على جهاز أو محفظة ، فإن الأداة تحقق أولاً جدول التوازن المكتوب من يتم التحقق من كل البطاقة في الخريطة من قبل خريطة البناء: إذا كانت خريطة البطاقة تحتوي على أدوات معالجة حقيقية للبطاقة، فإن Go يستخدمها بدلاً من تجميعها. go build go.mod لأنه يذهب يمكن أن تسبب تشغيل ملف واحد داخل البطاقة إعادة بناء البطاقة بأكملها، على العكس من ذلك، إذا لم يتغير التوازن، فإنه لا يتم إعادة بناءه أبدا، حتى لو كانت البطاقات الأخرى تعتمد عليها. كمية جيدة، حتى للمشاريع الكبيرة. operates at the package level incremental builds الـ Linking و Final Binary كما ذكرت سابقاً، يتم إنتاج البطاقات المكتوبة في البطاقات الرئيسية فقط، ولكن لا يتم إنتاج البطاقات المكتوبة في البطاقات المكتوبة في البطاقات المكتوبة في البطاقات المكتوبة في البطاقات المكتوبة في البطاقات المكتوبة في البطاقات المكتوبة. go build معلومات عن النسخة إرسال القذائف (إذا كانت متوفرة) بناء الملفات المحددة على منصة بصورة افتراضية ، يتم إدماج تفاصيل التحكم في الإصدار من خلال اللوحة، والتي تعتمد على "تلقائيًا" وتجسد معلومات VCS عندما يسمح السياق في المختبرات (استخدام إزالة أو يمكنك العثور على المزيد من التفاصيل في الوثائق . -buildvcs -buildvcs=false -buildvcs=true هنا هذا يجعل Go binaries مستقلة ومتناسقة بشكل كبير ، مما يسمح لك بإدخالها بثقة دون القلق بشأن فقدان التوازنات. أين تذهب الأقمار الصناعية (الخوف 😀) وبالتالي، يكتب الفوركس في المجلد الحالي، الذي يسمى بعد البطاقة.إذا كان البطاقة لا تنتج ثنائيًا على الإطلاق، ولكن يضمن فقط أن يتم جمع البطاقة والتأثيرات منها. الخيل أو استخدامها إنشاء العديد من البطاقات في واحدة. go build go build -o ./... في Windows ، لديك إجراء عند إنشاء العديد من البرامج الرئيسية في وقت واحد (على سبيل المثال، ) بدون يكتب Go واحدة من الفاتورة لكل البطاقة الرئيسية في المجلد الحالي. .exe ./cmd/... -o المباني المتوقعة والموثوقة إن مزيج من جمع كل البطاقة، والتخزين، والاتصال الاختياري يضمن أن تثبيت Go Build قابل للتنبؤ. يتم إعادة تكوين البناء عبر الآلات لا يتم إعادة بناء الكود غير الضروري أبدا يتم الاستفادة من العناصر المتوسطة لتمكين الوقت البناء بصراحة ، ليس فقط تجميع الكود ، بل هو . go build orchestrating a deterministic pipeline that balances human convenience with machine efficiency : الراحة دون مزايا خاصة go run اذهب السير إذا هو الكلاب العملية التي تنتج العناصر التي يمكنك استخدامها. العديد من المطورين يفكرون في ذلك ك "تجميع وتشغيل في خطوة واحدة"، ولكن ليس ذلك: تحت القفص، فإنه يستفيد من نفس نظام بناء مثل ، فإنه تم تحسينه فقط لرفاهية بدلاً من الاستمرار في العناصر. go build go run go build ماذا حقا ما يفعله go run إذا كنت تشكل (أو قائمة الملفات) ، يقوم Go أولاً بتقييم البطاقة والتأثيرات الخاصة بها كما هو الحال مع يتم استخدامه مرة أخرى لجميع البطاقات المشتركة التي تم تخزينها في المتجر ، بحيث يقوم المتصفح بتمويل ما لا يقل عن كود غير متغير. . go run main.go go build links the main package into a temporary binary, executes it, and deletes the binary once the program finishes من وجهة نظري، هذا يفسّر السبب في أن الاستدلالات المتكررة للبرنامج نفسها غالباً ما تشعر بالضغط على الفور: تم إجراء إعادة تأهيل شديد بالفعل، ويمكن أن تسبب إعادة تكوين فقط عن طريق الاتصال أو تغيير البطاقات. go run لماذا شعور مختلف go run على الرغم من مشاركتها في نفس الطريق السويسري، يمكن أن تشعر أبطأ في بعض السيناريوهات.لأنها تنتج ثنائي مؤقت كل مرة، يتم تكرار الاتصال، حتى لو كانت جميع التوازنات مجهولة.لأدوات صغيرة، هذه التوازنات غير قابلة للتنبؤ، ولكن للبرامج مع بطاقات التوازن الكبيرة، يمكن أن تكون مجهولة. go run الفرق الآخر هو أن هذا هو بالضبط النقطة: إنه تجارة إعادة استخدام ثنائي لسهولة التنفيذ. لا تحتاج إلى التفكير في أين تضع ثنائي أو ما تسميه، والوسيلة تتعامل معها تلقائيا. go run does not leave a persistent artifact عندما هل هي الأداة المناسبة - وعندما لا go run هو مثالي لل: go run التجارب السريعة أو النصائح تشغيل البرامج مرة واحدة دون تدمير نظام الملفات اختبار البرامج الصغيرة بشكل تفاعلي فهي أقل مناسبة لل: إنشاء الإنتاج أو تطوير الموردين المضطربين حيث يضيف الرابط المتكرر العبء أنابيب CI حيث يتم تخزين البيانات الثنائية المستمرة بشكل أكثر فعالية في هذه الحالة ، فإن النموذج الموصى به هو ، والذي يمنحك فوائد التخزين والعديد من التعديلات، ومهام مستمرة دون إنقاذ الأداء. go build && ./binary الحقيقة المختلطة go test اذهب إلى الاختبار ذاك يعتمد النظام على نفس المبادئ التي و فهم كيف تتفاعل الاختبارات مع نظام البناء يساعد على تفسير لماذا تعمل بعض الاختبارات على الفور في حين أن الآخرين تسبب إعادة بناء، ولماذا يبدو النهج Go سريعًا ومتوقعًا. go test go build go run إعادة الاستخدام في الاختبارات عندما تتحرك يحدد Go أولاً خريطة التوازن لقطة الاختبار، بما في ذلك أي قطة مجهولة. كما هو الحال مع أو وهذا يعني أن مجموعة الاختبارات الكبيرة يمكن أن تبدأ في كثير من الأحيان في تنفيذها على الفور، لأن معظم العملية الترجمة قد تم بالفعل. go test reused from the build cache go build go run حتى عندما تكون هناك مجموعة متنوعة من البطاقات، يتم إعادة بناء Go فقط على البطاقات التي تغيرت بالفعل. نتائج اختبار Caching وبالإضافة إلى تثبيت البطاقات المختلطة ، قم أيضاً إذا خسر الاختبار ولم يتغير أي من التخصصات أو الأسماك ذات الصلة، يمكن لـ Go إلغاء إعادة تشغيل الاختبار بالكامل. caches test results يتم توقيف نتائج الاختبار فقط في وضع قائمة البطاقات (مثل: أو ) في وضع المكتب المحلي ( مع عدم وجود بطاقات البطاقات) ، يتم إلغاء التخزين. go test . go test ./... go test هذا النشاط يتم التحكم به من قبل على سبيل المثال، إلخ، بغض النظر عن النتائج المتوقعة. ( تكرار الاختبارات / الماجستير. هي الطريقة الأكثر إثارة للإعجاب.اقرأ المزيد لمزيد من التفاصيل ) -count go test -count=1 -count -count=1 الوثائق تحسين نتائج الاختبارات في الرسوم المتحركة إنتاجية المطورين وفعالية التكنولوجيا، وخاصة بالنسبة للمشاريع الكبيرة مع تغطية اختبارية واسعة. . the system should avoid unnecessary work while preserving correctness التهابات في الاختبارات يمكن إعادة تشغيل الاختبار تلقائياً إذا: تم تغيير رمز الاختبار نفسه. لقد تغير أي اعتماد على الاختبار. لقد تغيرت العلامات التي تؤثر على الاختبار. أيضًا ، لا تُحذف الأسماء أو تغير الملفات / env أيضًا إلغاء الاستخدام المباشر. إذا لم يكن ذلك ، فإن Go يثق في النتيجة المضغوطة ، مع معرفة أنها هذا النهج يقلل من البناءات "الشائعة" الناجمة عن إعادة بناء غير ضرورية ويؤكد التوقعات أكثر من الراحة العميقة. deterministic and reproducible تحميل Handy Snippets إليكم بعض مفيدة الوسائل التي تؤثر على السلوك السلبي: go test إرسال جديد: إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال اضغط على اختبار: اذهب اختبار -run '^TestFoo$' -count=100 ./pkg - اذهب TestFoo 100 مرات للتحقق من الفراغ. الحد الأقصى: إجراء اختبار -bench. -count=3 - إجراء جميع النتائج 3 مرات للحصول على قياسات ثابتة. لماذا هذا يهم للمطورين من وجهة نظر المطور ، يخلق الجمع بين إخفاء المفاتيح و إخفاء النتائج الاختبارية تدفق العمل الذي يبدو عشوائيًا وآمنًا: تغييرات صغيرة تؤدي فقط إلى الخطوات اللازمة للتجميع. عودة الاختبارات غالباً ما تستمر حتى لا تتغير شيئاً. يمكن للمطورين التكرار بسرعة دون القلق بشأن الوضع المفقود. من خلال معالجة كل من البطاقات ونتائج الاختبارات كأشياء قابلة للتخزين في الفئة الأولى ، يجعل Go اختبارات سريعة ومحددة ، مما يعزز نفس تحسين "الإنسان + الجهاز" الذي يعتمد على و . go build go run مشاهدة ومتابعة نظام Build في معظم الأحيان ، يعمل نظام بناء Go على ما كنت تتوقع ، بسهولة وفعالة. عندما يشعر شيء ما ، ومع ذلك ، يمنحك سلسلة الأدوات رؤيةً مباشرةً على المستوى المنخفض في ما يفعله. كيفية جعل Toolchain Talk يوفر Go مجموعة صغيرة من العلامات التي تشير إلى خطوط البناء دون تغيير سلوكه: -x تصفح الأوامر الحقيقية التي يتم تنفيذها أثناء إنشاءها.هذا يشمل إرسال الإرسال، خطوات المانج، وإجراء الأدوات.هذا هو أسرع الطريقة للرد على السؤال: "ماذا يفعل Go في الواقع الآن؟". -n يظهر ما سيحصل عليه، دون إجراء الإجراءات.هذا مفيد عندما تريد أن تفهم خطة بناء دون تفعيل إعادة بناء. تعمل على الحفاظ على مكتبة بناء مؤقتة بدلاً من حذفها، مما يتيح لك التحقق من الملفات المتوسطة، والرقم الناشئ، والمشاهدات المؤقتة التي تم إنشاؤها أثناء جمعها أو الاتصال بها. هذه الأسطوانات تحول سلسلة الأدوات Go من خزان أسود إلى قناة شفافة.من المهم، أنها لا تمنع التخزين، فهي ببساطة جعل ضربات التخزين والخسائر مرئية. فهم لماذا تم إعادة بناء حزمة واحدة من أكثر المصادر شيوعاً للتخبط هي إعادة بناء حزمة "لأنها لا توجد سببًا واضحًا"، مع نموذج عقلي صحيح، يصبح من السهل تشخيص ذلك: يتم إعادة بناء البطاقة عندما تغير أي إشارة إلى مفتاح الكاميرا. تشمل الملفات كود مصدر، علامات بناء، علامات المؤلف، منصة الهدف، ومعدلات البيئة ذات الصلة. التغيرات المرتبطة تنتشر إلى أعلى من خلال جدول البطاقة. استخدام في كثير من الأحيان، يمكنك أن ترى ما إذا كان Go يستخدم إعادة استخدام أدوات في المطبوعة أو يتم تجميع البطاقة، ويفسر السبب من السياق. على سبيل المثال، على الجواب الأول. -x go clean -cache إعادة بناء القوة (عندما تقولها حقا) في بعض الأحيان تحتاج حقاً إلى تجنب المفاتيح، على سبيل المثال، عند تقييم بناء نظيف أو تحليل مشاكل سلسلة الأدوات. -إعادة بناء القوات من البروتوكولات ، مع تجاهل العناوين المجموعات المختلطة المختلطة go clean -cache يغسل الكمبيوتر الكامل Build Cache تم تصميم هذه الخيارات بشكل عاجل ومتلازمة قليلا. Go تم تصميمه لتعزيز الاستخدام الصحيح من قبل المتصفح ، وإلغاء إلغاء التخزين المباشر هو الاستثناء.إذا كنت تدرك أنك تخلص من التخزين المباشر ، فإنها غالباً ما تشير إلى أن شيء آخر في إعداد البناء يحتاج إلى اهتمام. تجنب الإصلاحات التي تدفع المقاومة لأن نظام بناء Go هو تحديدي ، فإن التفكير نادرا ما يساعد. ، و و يقدم لك دليلًا ملموسًا على ما يحدث، وهو ما يكفي تقريبًا دائمًا لتفسير السلوك المفاجئ. -x -n -work إذا كنت تعتقد ذلك: وبناءً على ذلك، فإنّ البناء يُعَدّ مُستندًا. البطاقات هي وحدات العمل. وبهذا يتحقق الأمن في الاستفادة من تصحيح سلوك التصحيح يصبح موضوعاً للمراقبة بدلاً من الاختبار والخطأ. تأثيرات على المشاريع الحقيقية خيارات التصميم المرتبطة بـ نظام Go Build ليست عشوائية. تظهر بشكل واضح عندما تتحرك أكثر من أمثلة صغيرة وبدء العمل على قواعد الكود الحقيقية: خطوط التكامل المستمرة، المخزونات الكبيرة، وتطبيقات العمل التي تديرها المدونات. الشعور بالسرعة على المستوى المحلي هو ما يجعل Go يصل إلى حد كبير في بيئات الإنتاج. go build CI أنابيب وتكرار وبما أن انخفاضات Go على البناءات المحددة على المحتوى يجعلها مثالية بشكل خاص لـ CI. لأن النتائج البناءية تنتج تمامًا من المحتوى المصدر، وتصنيفات الموديل، والتكوين واضح، فإن البناءات التكوينية تتصرف بشكل مستمر عبر الآلات والبيئات. هذا التنبؤ يجعله يجعل Go Builds مريحة للغاية. سواء كنت تستخدم بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطاقة بطا Monorepos و قواعد الكود الكبرى في المخزونات الكبيرة، تصبح خزانة البناء حدود الأداء.لأن الخزانات الكبيرة تجمع البطاقات بشكل مستقل، ويمكن استخدام البطاقات الصغيرة والواضحة بشكل جيد في العديد من البطاقات مع الحد الأدنى من التكلفة. الجانب الخلفي هو أن البطاقات الكبيرة أو المرتبطة بشدة يمكن أن تصبح ضوضاء. يمكن أن تغير بعض التغييرات الصغيرة في البطاقة التي تستخدم بشكل كبير في إلغاء جزء كبير من الكاميرا الضوئية، مما يؤدي إلى زيادة وقت البناء على جميع المخزون. لا تغطي هذه التكاليف، ولكنها تجعل حدود البطاقة مرئية وأهمية، مما يعزز الهياكل الجيدة وإظهار الانفصال السيئ في وقت مبكر. الإصدارات، Tooling و Automation تعتمد نفس نموذج البناء على بيئة أدوات Go. المدونات الكودية، والخدمات اللغوية، والبرمجيات، والإنتاجية الكودية كلها على نفس فهم مستوى البطاقة للكود الخاص بك. لأن سلسلة الأدوات تظهر خطوط البناء واضحة ومحددة، الأدوات يمكن أن تتكامل بشكل عميق دون التفكير أو إعادة تنفيذ منطق البناء. هذا هو أحد الأسباب التي تجعل أدوات Go متوافقة بشكل غير عادي: يتم مشاهدة الملفات والتقنيات من نفس الطريقة التي يقوم بها المتصفح. من التكامل الذاتي إلى التجديد التلقائي إلى الاختبارات التلقائية، كل شيء يعتمد على نفس المبادئ حول الخلايا والالتزامات والتخزين. التالي: الثقة في النموذج يمتلك نظام Go Build نجاحًا لأنه يخلق توازنًا واضحًا: وهو تحسينًا لتوضيحًا أكثر من الذكاء، وتصميمًا واضحًا أكثر من السلوك المفرط. على سطحه، هذا يبدو بسيطًا. بمجرد تثبيت هذا النموذج ، تبدأ العديد من السلوكيات اليومية بمعنى أن البناء السريع ليس لأن Go يعمل بشكل أقل ، ولكن لأنها تجنب العمل. العمل . يبدو جيدًا لأنها تستخدم نفس الآلة لا لأنها تتنافى مع الشفافية.إجراء الاختبار موثوق به لأن النتائج الاختبارية يتم تخزينها باستخدام نفس القواعد المحددة مثل البطاقات المعدلة. غير ضرورية go run go build بالنسبة للإنسان، وهذا يعني أقل من المفاجآت، أسرار التردد أسرع، وأدوات تتصرف بشكل مستمر في جميع إصدارات الكود، والآلات، والأنظمة الصناعية. بالنسبة للآلات، وهذا يعني إنشاءات قابلة للتكرار، والأشياء التي تتمتع بسهولة، والأنظمة التي تنمو بشكل طبيعي مع نمو قواعد الكود. إذا كان هناك إرسال واحد، فإنه هذا: نظام بناء Go ليس شيئا للقتال أو العمل. إنه API بنفسه - الذي يمنح الفهم. مرة أخرى كنت تثق في النموذج، يوقف سلسلة الأدوات الشعور بالغرابة ويبدأ في الشعور بالثقة، وهذا هو ما تريده من البنية التحتية التي تبني رمزك.