మాడ్యూల్ పాఠాలు (5/5)
అడ్డంకులు మరియు ట్యాగ్లను రూపొందించండి
బిల్డ్ అడ్డంకులు (బిల్డ్ ట్యాగ్లు అని కూడా పిలుస్తారు) OS, ఆర్కిటెక్చర్, గో వెర్షన్ లేదా కమాండ్ లైన్లో పాస్ చేసిన కస్టమ్ ట్యాగ్ల ఆధారంగా ** ఫైల్ యొక్క కంపైలేషన్**కి గేట్ చేయండి. అవి క్రాస్-ప్లాట్ఫారమ్ కోడ్, ఆప్ట్-ఇన్ హెవీ టెస్ట్ ఫైల్లు మరియు ఇలాంటి దృశ్యాల కోసం ఉపయోగించబడతాయి.
ఆధునిక సింటాక్స్: //go:build
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 ప్రారంభించబడితే నిజం.
క్రాస్-ప్లాట్ఫారమ్: ఫైల్ పేరు కన్వెన్షన్
స్పష్టమైన ట్యాగ్లకు అతీతంగా, గో ఫైల్ పేరు ప్రత్యయాలను అవ్యక్త నిర్మాణ పరిమితులుగా గుర్తిస్తుంది:
db_linux.go // linux only
db_windows.go // windows only
db_linux_amd64.go // linux/amd64 only
ఇది ఒకే ఇంటర్ఫేస్ యొక్క ప్లాట్ఫారమ్-ఆధారిత అమలుల కోసం ఇడియోమాటిక్ నమూనా (ప్రతి ఫైల్ వేర్వేరు కోడ్లతో ఒకే ఫంక్షన్లను నిర్వచిస్తుంది).
అనుకూల ట్యాగ్లు: భారీ పరీక్షలను ఎంచుకోవడం
కస్టమ్ ట్యాగ్లు మీరు కమాండ్ లైన్లో పాస్ చేసే ఏదైనా ఐడెంటిఫైయర్:
//go:build integration
package mypkg
// tests that need a real DB, run only on demandఅమలు:
go test -tags=integration ./...-tags=integration లేకుండా, ఫైల్ కంపైలర్కు కనిపించదు (దానిలోని పరీక్షలు go test కోసం లేవు). ఏకీకరణ పరీక్షల నుండి యూనిట్ పరీక్షలను (ఎల్లప్పుడూ) వేరు చేయడానికి ఇది కానానికల్ మార్గం (డిమాండ్పై, బహుశా CIలో మాత్రమే).
పాత సింటాక్స్: // +build (విస్మరించబడింది)
1.17కి ముందు ఫార్మాట్ // +build linux (స్పేస్ని గమనించండి మరియు అది +build కాదు, go:build). ఇది ఇప్పటికీ వెనుకబడిన అనుకూలత కోసం మద్దతునిస్తుంది, కానీ Go 1.17+లో gofmt పాతదాన్ని మాత్రమే కనుగొన్నప్పుడు రెండింటిని జోడిస్తుంది:
//go:build linux
// +build linux
package mainకొత్త ఫైల్ల కోసం ఆధునిక //go:build ఫారమ్ను మాత్రమే ఉపయోగించండి.
వ్యాయామాలు
ఫైల్ ఎగువన Linuxలో మాత్రమే కంపైల్ చేసే బిల్డ్ పరిమితిని జోడించండి. ప్యాకేజీకి ముందు ఖాళీ లైన్ గుర్తుంచుకోండి.
సూచనను చూపించు
//go:build వ్యాఖ్య ప్యాకేజీకి ముందు, ఒక లైన్లో, దాని తర్వాత ఖాళీ పంక్తితో ఉంటుంది.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
విండోస్ను మినహాయించే నిర్మాణ పరిమితిని జోడించండి (నిరాకరణ ఆపరేటర్ని ఉపయోగించండి!).
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
పరీక్ష సమయంలో ప్రారంభించడానికి అనుకూల 'ఇంటిగ్రేషన్' ట్యాగ్ //go:build ఇంటిగ్రేషన్తో ప్రకటించబడింది, మీరు ఏ ఫ్లాగ్ని ఉపయోగిస్తున్నారు?
$ go test -tags=???