Go
बाधाओं का निर्माण
खोज…
वाक्य - विन्यास
- // + बिल्ड टैग
टिप्पणियों
बिल्ड टैग का उपयोग आपके कोड में सशर्त रूप से कुछ फ़ाइलों के निर्माण के लिए किया जाता है। बिल्ड टैग उन फ़ाइलों को अनदेखा कर सकते हैं जिन्हें आप निर्माण नहीं करना चाहते हैं जब तक कि स्पष्ट रूप से शामिल नहीं किया जाता है, या कुछ पूर्वनिर्धारित बिल्ड टैग का उपयोग किसी विशेष आर्किटेक्चर या ऑपरेटिंग सिस्टम पर केवल एक फाइल बनाने के लिए किया जा सकता है।
बिल्ड टैग किसी भी प्रकार की स्रोत फ़ाइल में दिखाई दे सकते हैं (न केवल गो), बल्कि उन्हें फ़ाइल के शीर्ष के पास दिखाई देना चाहिए, केवल रिक्त लाइनों और अन्य पंक्ति टिप्पणियों से पहले। इन नियमों का अर्थ है कि गो फ़ाइलों में एक संकुल अवरोधक पैकेज क्लॉज से पहले प्रदर्शित होना चाहिए।
बिल्ड टैग की एक श्रृंखला को एक रिक्त लाइन द्वारा पालन किया जाना चाहिए।
अलग एकीकरण परीक्षण
बिल्ड की बाधाओं को आमतौर पर एकीकरण परीक्षणों से सामान्य इकाई परीक्षणों को अलग करने के लिए उपयोग किया जाता है जिनके लिए बाहरी संसाधनों की आवश्यकता होती है, जैसे डेटाबेस या नेटवर्क एक्सेस। ऐसा करने के लिए, परीक्षण फ़ाइल के शीर्ष पर एक कस्टम बिल्ड बाधा जोड़ें:
// +build integration
package main
import (
"testing"
)
func TestThatRequiresNetworkAccess(t *testing.T) {
t.Fatal("It failed!")
}
परीक्षण फ़ाइल बिल्ड निष्पादन योग्य में संकलित नहीं करेगा जब तक कि go test
के निम्नलिखित आह्वान का उपयोग न किया जाए:
go test -tags "integration"
परिणाम:
$ go test
? bitbucket.org/yourname/yourproject [no test files]
$ go test -tags "integration"
--- FAIL: TestThatRequiresNetworkAccess (0.00s)
main_test.go:10: It failed!
FAIL
exit status 1
FAIL bitbucket.org/yourname/yourproject 0.003s
वास्तुकला के आधार पर कार्यान्वयन का अनुकूलन करें
हम केवल उन आर्किटेक्चर के लिए एक साधारण xor फ़ंक्शन का अनुकूलन कर सकते हैं जो अनलॉग्ड रीड्स / सपोर्ट का समर्थन करते हैं दो फ़ंक्शन बनाते हैं जो फ़ंक्शन को परिभाषित करते हैं और उन्हें एक निर्माण बाधा के साथ उपसर्ग करते हैं (एक्सोर कोड के एक वास्तविक उदाहरण के लिए जो यहां गुंजाइश से बाहर है, crypto/cipher/xor.go
देखें crypto/cipher/xor.go
मानक पुस्तकालय में crypto/cipher/xor.go
):
// +build 386 amd64 s390x
package cipher
func xorBytes(dst, a, b []byte) int { /* This function uses unaligned reads / writes to optimize the operation */ }
और अन्य आर्किटेक्चर के लिए:
// +build !386,!amd64,!s390x
package cipher
func xorBytes(dst, a, b []byte) int { /* This version of the function just loops and xors */ }