தொகுதி பாடங்கள் (5/5)
கட்டுப்பாடுகள் மற்றும் குறிச்சொற்களை உருவாக்கவும்
பில்ட் கன்ஸ்ட்ரெயின்ட்ஸ் (பில்ட் டேக்குகள் என்றும் அழைக்கப்படுகிறது) OS, ஆர்கிடெக்சர், Go பதிப்பு அல்லது கட்டளை வரியில் அனுப்பப்பட்ட தனிப்பயன் குறிச்சொற்களின் அடிப்படையில் ** ஒரு கோப்பின் தொகுப்பை** நுழையுங்கள். அவை குறுக்கு-தளம் குறியீடு, கனரக சோதனைக் கோப்புகளைத் தேர்வுசெய்தல் மற்றும் ஒத்த காட்சிகளுக்குப் பயன்படுத்தப்படுகின்றன.
நவீன தொடரியல்: //go:build
Go 1.17+ என்பதால், நியமன வடிவம் சிறப்பு //go:build கருத்து, ** package** க்கு முன் கோப்பின் மேற்புறத்தில், ஒரு வரியில், அதைத் தொடர்ந்து ஒரு வெற்று வரி:
//go:build linux
package main
// this file is built ONLY on Linuxமூன்று முழுமையான விதிகள்:
- கருத்து கண்டிப்பாக
packageக்கு முன் தோன்ற வேண்டும். - அதைத் தொடர்ந்து ஒரு வெற்று வரி இருக்க வேண்டும்.
//மற்றும்go:buildஇடையே இடைவெளி இல்லை (இது ஒரு தொடரியல் தூண்டுதல், எந்த கருத்தும் அல்ல).
பூலியன் வெளிப்பாடுகள்
//go:buildக்குப் பின் வரும் வெளிப்பாடு தருக்க ஆபரேட்டர்களை ஏற்கிறது:
//go:build linux && amd64 // both conditions
//go:build linux || darwin // any one (Unix-like)
//go:build !windows // negation
//go:build (linux || darwin) && !arm64
//go:build go1.22 // Go version ≥ 1.22
//go:build integration // custom tag (see below)மிகவும் பொதுவான உள்ளமைக்கப்பட்ட குறிச்சொற்கள்:
- OS:
linux,darwin,windows,freebsd,js... - கட்டிடக்கலை:
amd64,arm64,386,wasm... - கோ பதிப்பு:
go1.20,go1.22... (பதிப்பு ≥ என்றால் உண்மை). cgo: cgo இயக்கப்பட்டிருந்தால் சரி.
குறுக்கு-தளம்: கோப்பு பெயர் மாநாடு
வெளிப்படையான குறிச்சொற்களுக்கு அப்பால், Go ஆனது கோப்புப் பெயர் பின்னொட்டுகளை மறைமுகமான உருவாக்கக் கட்டுப்பாடுகளாக அங்கீகரிக்கிறது:
db_linux.go // linux only
db_windows.go // windows only
db_linux_amd64.go // linux/amd64 only
இது ஒரே இடைமுகத்தின் இயங்குதளம் சார்ந்த செயலாக்கங்களுக்கான idiomatic வடிவமாகும் (ஒவ்வொரு கோப்பும் வெவ்வேறு குறியீடுகளுடன் ஒரே செயல்பாடுகளை வரையறுக்கிறது).
தனிப்பயன் குறிச்சொற்கள்: கனமான சோதனைகளைத் தேர்ந்தெடுப்பது
தனிப்பயன் குறிச்சொற்கள் நீங்கள் கட்டளை வரியில் ** கடந்து செல்லும் எந்த அடையாளங்காட்டியும் ஆகும்:
//go:build integration
package mypkg
// tests that need a real DB, run only on demandசெயல்படுத்தல்:
go test -tags=integration ./...-tags=integration இல்லாமல், கோப்பு கம்பைலருக்குப் புலப்படாது (அதில் உள்ள சோதனைகள் go test க்கு இல்லை). யூனிட் சோதனைகளை (எப்போதும்) ஒருங்கிணைப்புச் சோதனைகளிலிருந்து (தேவையின் பேரில், சிஐயில் மட்டும்) பிரிப்பதற்கு இது ஒரு முறையான வழியாகும்.
பழைய தொடரியல்: // +build (நிறுத்தப்பட்டது)
1.17க்கு முன் வடிவம் // +build linux (இடைவெளியைக் கவனியுங்கள், அது +build, go:build அல்ல). பின்தங்கிய இணக்கத்தன்மைக்கு இது இன்னும் ஆதரிக்கப்படுகிறது, ஆனால் Go 1.17+ இல் உள்ள gofmt பழையதை மட்டும் கண்டுபிடிக்கும் போது இரண்டையும் சேர்க்கிறது:
//go:build linux
// +build linux
package mainபுதிய கோப்புகளுக்கு நவீன //go:build படிவத்தை மட்டும் பயன்படுத்தவும்.
பயிற்சிகள்
கோப்பின் மேற்பகுதியில் லினக்ஸில் மட்டும் தொகுக்கும் உருவாக்கக் கட்டுப்பாட்டைச் சேர்க்கவும். தொகுப்புக்கு முன் வெற்று வரியை நினைவில் கொள்க.
குறிப்பைக் காட்டு
//go:build கருத்து தொகுப்புக்கு முன் செல்கிறது, ஒரு வரியில் தானாகவே, அதைத் தொடர்ந்து ஒரு வெற்று வரி.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
விண்டோஸைத் தவிர்த்து உருவாக்கக் கட்டுப்பாட்டைச் சேர்க்கவும் (எதிர்ப்பு ஆபரேட்டரைப் பயன்படுத்தவும்!).
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
சோதனை நேரத்தில் இயக்க, //go:build integration உடன் பிரத்தியேக 'ஒருங்கிணைப்பு' குறிச்சொல் அறிவிக்கப்பட்டது, நீங்கள் எந்தக் கொடியைப் பயன்படுத்துகிறீர்கள்?
$ go test -tags=???