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

செல் தொகுதிகள்

ஒரு Go தொகுதி என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட தொகுப்புகளைக் கொண்ட பதிப்பு செய்யக்கூடிய அலகு ஆகும். இது நவீன சார்பு அமைப்பின் அடித்தளம் (Go 1.11+): இனி GOPATH, கட்டாயம் vendor, வெளிப்படையான மற்றும் மீண்டும் உருவாக்கக்கூடிய சார்புகள் இல்லை.

go.mod: மாட்யூல் மேனிஃபெஸ்ட்

Code
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 கட்டளைகளால் தானாகவே புதுப்பிக்கப்படும்.

அத்தியாவசிய கட்டளைகள்

Bash
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 graph

go 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.
Go
import "github.com/foo/bar/v2"

ஒரே நூலகத்தின் v1 மற்றும் v2 இரண்டையும் ஒரே நேரத்தில் இறக்குமதி செய்ய இது உங்களை அனுமதிக்கிறது (முற்போக்கான இடம்பெயர்வுகளின் போது பயனுள்ளதாக இருக்கும்).

பாதைகள் மற்றும் உள் தொகுப்புகளை இறக்குமதி செய்யவும்

உங்கள் தொகுதி example.com/myapp எனில், ஒரு utils/ துணைக் கோப்புறை இவ்வாறு இறக்குமதி செய்யப்படும்:

Go
import "example.com/myapp/utils"

பாதையானது மட்டுமே go.mod இல் அறிவிக்கப்பட்ட பெயரைப் பொறுத்தது, வட்டில் உள்ள இடத்தைப் பொறுத்தது அல்ல: வேறு கோப்புறையில் உள்ள அதே குறியீடு தொடர்ந்து வேலை செய்கிறது.

பணியிட பயன்முறை (செல் 1.18+)

ஒரே நேரத்தில் ஒன்றையொன்று குறிப்பிடும் பல தொகுதிகளில் வேலை செய்ய (எ.கா. நூலகம் மற்றும் அதைப் பயன்படுத்தும் பயன்பாடு):

Bash
go work init ./lib ./app

இது go.work ஐ உருவாக்குகிறது: go build வெளியிடப்பட்டதைப் பதிவிறக்குவதற்குப் பதிலாக ./lib இன் உள்ளூர் பதிப்பைப் பயன்படுத்தும். ** go.work** (இது ஒரு வளர்ச்சி சூழல்).

பயிற்சிகள்

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

தொகுதி example.com/myapp மற்றும் utils துணை கோப்புறையை கொண்டுள்ளது. முழு பாதையைப் பயன்படுத்தி பிரதானமாக துணைப் பொதியை இறக்குமதி செய்யவும்.

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

இறக்குமதி பாதை என்பது தொகுதியின் பெயர் (go.mod இலிருந்து) மற்றும் கோப்புறையின் தொடர்புடைய பாதையாகும்.

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

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

fmt மற்றும் os இரண்டையும் இறக்குமதி செய்து, இறக்குமதி (... ) தொடரியல் மூலம் தனிப்பட்ட இறக்குமதிகளை ஒரு இறக்குமதி குழுவாக மாற்றவும்.

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

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

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

go.mod இலிருந்து இறக்குமதி செய்யப்படாத சார்புகளை நீக்கி விடுபட்டவற்றைச் சேர்க்கும் கட்டளை எது?

Go
$ go mod ???
பதில் விருப்பங்கள்