முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 9 · பாடம் 5 இன் 5பாடத்திட்டத்தில் 45/50~10 min
தொகுதி பாடங்கள் (5/5)

கட்டுப்பாடுகள் மற்றும் குறிச்சொற்களை உருவாக்கவும்

பில்ட் கன்ஸ்ட்ரெயின்ட்ஸ் (பில்ட் டேக்குகள் என்றும் அழைக்கப்படுகிறது) OS, ஆர்கிடெக்சர், Go பதிப்பு அல்லது கட்டளை வரியில் அனுப்பப்பட்ட தனிப்பயன் குறிச்சொற்களின் அடிப்படையில் ** ஒரு கோப்பின் தொகுப்பை** நுழையுங்கள். அவை குறுக்கு-தளம் குறியீடு, கனரக சோதனைக் கோப்புகளைத் தேர்வுசெய்தல் மற்றும் ஒத்த காட்சிகளுக்குப் பயன்படுத்தப்படுகின்றன.

நவீன தொடரியல்: //go:build

Go 1.17+ என்பதால், நியமன வடிவம் சிறப்பு //go:build கருத்து, ** package** க்கு முன் கோப்பின் மேற்புறத்தில், ஒரு வரியில், அதைத் தொடர்ந்து ஒரு வெற்று வரி:

Go
//go:build linux

package main

// this file is built ONLY on Linux

மூன்று முழுமையான விதிகள்:

  1. கருத்து கண்டிப்பாக package க்கு முன் தோன்ற வேண்டும்.
  2. அதைத் தொடர்ந்து ஒரு வெற்று வரி இருக்க வேண்டும்.
  3. // மற்றும் go:build இடையே இடைவெளி இல்லை (இது ஒரு தொடரியல் தூண்டுதல், எந்த கருத்தும் அல்ல).

பூலியன் வெளிப்பாடுகள்

//go:buildக்குப் பின் வரும் வெளிப்பாடு தருக்க ஆபரேட்டர்களை ஏற்கிறது:

Go
//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 ஆனது கோப்புப் பெயர் பின்னொட்டுகளை மறைமுகமான உருவாக்கக் கட்டுப்பாடுகளாக அங்கீகரிக்கிறது:

Code
db_linux.go         // linux only
db_windows.go       // windows only
db_linux_amd64.go   // linux/amd64 only

இது ஒரே இடைமுகத்தின் இயங்குதளம் சார்ந்த செயலாக்கங்களுக்கான idiomatic வடிவமாகும் (ஒவ்வொரு கோப்பும் வெவ்வேறு குறியீடுகளுடன் ஒரே செயல்பாடுகளை வரையறுக்கிறது).

தனிப்பயன் குறிச்சொற்கள்: கனமான சோதனைகளைத் தேர்ந்தெடுப்பது

தனிப்பயன் குறிச்சொற்கள் நீங்கள் கட்டளை வரியில் ** கடந்து செல்லும் எந்த அடையாளங்காட்டியும் ஆகும்:

Go
//go:build integration

package mypkg

// tests that need a real DB, run only on demand

செயல்படுத்தல்:

Bash
go test -tags=integration ./...

-tags=integration இல்லாமல், கோப்பு கம்பைலருக்குப் புலப்படாது (அதில் உள்ள சோதனைகள் go test க்கு இல்லை). யூனிட் சோதனைகளை (எப்போதும்) ஒருங்கிணைப்புச் சோதனைகளிலிருந்து (தேவையின் பேரில், சிஐயில் மட்டும்) பிரிப்பதற்கு இது ஒரு முறையான வழியாகும்.

பழைய தொடரியல்: // +build (நிறுத்தப்பட்டது)

1.17க்கு முன் வடிவம் // +build linux (இடைவெளியைக் கவனியுங்கள், அது +build, go:build அல்ல). பின்தங்கிய இணக்கத்தன்மைக்கு இது இன்னும் ஆதரிக்கப்படுகிறது, ஆனால் Go 1.17+ இல் உள்ள gofmt பழையதை மட்டும் கண்டுபிடிக்கும் போது இரண்டையும் சேர்க்கிறது:

Go
//go:build linux
// +build linux

package main

புதிய கோப்புகளுக்கு நவீன //go:build படிவத்தை மட்டும் பயன்படுத்தவும்.

பயிற்சிகள்

உடற்பயிற்சி#go.m9.l5.e1
முயற்சிகள்: 0ஏற்றுகிறது…

கோப்பின் மேற்பகுதியில் லினக்ஸில் மட்டும் தொகுக்கும் உருவாக்கக் கட்டுப்பாட்டைச் சேர்க்கவும். தொகுப்புக்கு முன் வெற்று வரியை நினைவில் கொள்க.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

//go:build கருத்து தொகுப்புக்கு முன் செல்கிறது, ஒரு வரியில் தானாகவே, அதைத் தொடர்ந்து ஒரு வெற்று வரி.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#go.m9.l5.e2
முயற்சிகள்: 0ஏற்றுகிறது…

விண்டோஸைத் தவிர்த்து உருவாக்கக் கட்டுப்பாட்டைச் சேர்க்கவும் (எதிர்ப்பு ஆபரேட்டரைப் பயன்படுத்தவும்!).

எடிட்டரை ஏற்றுகிறது…

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

Quiz#go.m9.l5.e3
தயார்

சோதனை நேரத்தில் இயக்க, //go:build integration உடன் பிரத்தியேக 'ஒருங்கிணைப்பு' குறிச்சொல் அறிவிக்கப்பட்டது, நீங்கள் எந்தக் கொடியைப் பயன்படுத்துகிறீர்கள்?

Go
$ go test -tags=???
பதில் விருப்பங்கள்