தொகுதி பாடங்கள் (4/5)
செல் தொகுதிகள்
ஒரு Go தொகுதி என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுப்புகளைக் கொண்ட பதிப்பு செய்யக்கூடிய அலகு ஆகும். இது நவீன சார்பு அமைப்பின் அடித்தளம் (Go 1.11+): இனி GOPATH, கட்டாயம் vendor, வெளிப்படையான மற்றும் மீண்டும் உருவாக்கக்கூடிய சார்புகள் இல்லை.
go.mod: மாட்யூல் மேனிஃபெஸ்ட்
module example.com/myapp
go 1.22
require (
github.com/google/uuid v1.6.0
golang.org/x/time v0.5.0
)
மூன்று முக்கிய உத்தரவுகள்:
module <path>— தொகுதியின் இறக்குமதி பாதை. அனைத்து உள் தொகுப்புகளும்example.com/myapp/sub/pkgஆக இறக்குமதி செய்யப்படுகின்றன. இது உண்மையான URL ஆக இருக்க வேண்டிய அவசியமில்லை, ஆனால்go getவழியாக வெளியிட அது தீர்க்கப்பட வேண்டும்.go <version>- தேவைப்படும் குறைந்தபட்ச Go பதிப்பு (எந்த மொழி அம்சங்கள் அனுமதிக்கப்படுகின்றன என்பதைக் கட்டுப்படுத்தவும் பயன்படுத்தப்படுகிறது, எ.கா. 1.23 இல் ரேஞ்ச்-ஓவர்-ஃபங்க்).require— அவற்றின் சரியான பதிப்புடன் நேரடி சார்புகள்.
பிற வழிகாட்டுதல்கள்: replace (ஒரு முட்கரண்டி அல்லது உள்ளூர் பாதையுடன் ஒரு டெப் மாற்றாக), exclude, retract.
go.sum: கிரிப்டோகிராஃபிக் லாக்ஃபைல்
go.mod உடன், go.sum பதிவிறக்கம் செய்யப்பட்ட ஒவ்வொரு பதிப்பின் கிரிப்டோகிராஃபிக் ஹாஷையும் கொண்டுள்ளது (இடைநிலை சார்புகள் உட்பட). இது ** மறுஉருவாக்கம்**க்கு உத்தரவாதம் அளிக்கிறது: வெளியிடப்பட்ட பதிப்பை யாராவது சேதப்படுத்தினால், உருவாக்கம் தோல்வியடையும்.
எப்போதும் அதைச் செய்யுங்கள். இது go கட்டளைகளால் தானாகவே புதுப்பிக்கப்படும்.
அத்தியாவசிய கட்டளைகள்
go mod init example.com/myapp # create go.mod
go get github.com/google/uuid # add the dep at its latest version
go get github.com/google/uuid@v1.5.0 # specific version
go get -u ./... # upgrade every dep
go mod tidy # remove unused deps, add missing ones
go mod download # download everything into the cache
go mod why github.com/x/y # explain why a dep is included
go mod graph # full dependency graphgo mod tidy என்பது நீங்கள் இறக்குமதியின் ஒவ்வொரு மாற்றத்துக்குப் பிறகும் இயக்குவது: go.mod உண்மையில் பயன்படுத்தப்பட்ட தொகுப்புகளை சரியாகப் பிரதிபலிக்கிறது என்று உத்தரவாதம் அளிக்கிறது.
சொற்பொருள் இறக்குமதி பதிப்பு (SIV)
பதிப்புகள் SemVer ஐப் பின்தொடர்கின்றன: v1.2.3 = MAJOR.MINOR.PATCH. சுவாரஸ்யமான பகுதி மேஜர் v2+:
- மேஜர்
v0மற்றும்v1→ சாதாரண பாதை:github.com/foo/bar. - மேஜர்
v2அல்லது அதற்குப் பிறகு → பாதை முக்கிய பதிப்பு:github.com/foo/bar/v2.
import "github.com/foo/bar/v2"ஒரே நூலகத்தின் v1 மற்றும் v2 இரண்டையும் ஒரே நேரத்தில் இறக்குமதி செய்ய இது உங்களை அனுமதிக்கிறது (முற்போக்கான இடம்பெயர்வுகளின் போது பயனுள்ளதாக இருக்கும்).
பாதைகள் மற்றும் உள் தொகுப்புகளை இறக்குமதி செய்யவும்
உங்கள் தொகுதி example.com/myapp எனில், ஒரு utils/ துணைக் கோப்புறை இவ்வாறு இறக்குமதி செய்யப்படும்:
import "example.com/myapp/utils"பாதையானது மட்டுமே go.mod இல் அறிவிக்கப்பட்ட பெயரைப் பொறுத்தது, வட்டில் உள்ள இடத்தைப் பொறுத்தது அல்ல: வேறு கோப்புறையில் உள்ள அதே குறியீடு தொடர்ந்து வேலை செய்கிறது.
பணியிட பயன்முறை (செல் 1.18+)
ஒரே நேரத்தில் ஒன்றையொன்று குறிப்பிடும் பல தொகுதிகளில் வேலை செய்ய (எ.கா. நூலகம் மற்றும் அதைப் பயன்படுத்தும் பயன்பாடு):
go work init ./lib ./appஇது go.work ஐ உருவாக்குகிறது: go build வெளியிடப்பட்டதைப் பதிவிறக்குவதற்குப் பதிலாக ./lib இன் உள்ளூர் பதிப்பைப் பயன்படுத்தும். ** go.work** (இது ஒரு வளர்ச்சி சூழல்).
பயிற்சிகள்
தொகுதி example.com/myapp மற்றும் utils துணை கோப்புறையை கொண்டுள்ளது. முழு பாதையைப் பயன்படுத்தி பிரதானமாக துணைப் பொதியை இறக்குமதி செய்யவும்.
குறிப்பைக் காட்டு
இறக்குமதி பாதை என்பது தொகுதியின் பெயர் (go.mod இலிருந்து) மற்றும் கோப்புறையின் தொடர்புடைய பாதையாகும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
fmt மற்றும் os இரண்டையும் இறக்குமதி செய்து, இறக்குமதி (... ) தொடரியல் மூலம் தனிப்பட்ட இறக்குமதிகளை ஒரு இறக்குமதி குழுவாக மாற்றவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
go.mod இலிருந்து இறக்குமதி செய்யப்படாத சார்புகளை நீக்கி விடுபட்டவற்றைச் சேர்க்கும் கட்டளை எது?
$ go mod ???