வரிசை என்றால் என்ன?
வால்கள் முன்னரே தீர்மானிக்கப்பட்ட வரிசையில் கூறுகளைச் சேமிக்கவும் மீட்டெடுக்கவும் பயன்படும் தரவு கட்டமைப்புகள். இது ஒரு நேரியல் தரவு கட்டமைப்பாகும், இது ஒரு அடுக்கை ஒத்திருக்கிறது மற்றும் அதை கடைபிடிக்கிறது FIFO (முதல்-இன், முதல்-அவுட்) ஆட்சி. இது காத்திருப்பு பட்டியல் அல்லது முதலில் வரும் நபர் முதலில் சேவை செய்யும் வரியுடன் ஒப்பிடலாம். ஏற்கனவே உள்ள கூறுகள் முன்புறத்தில் இருந்து கைவிடப்படுகின்றன வரிசை , மற்றும் புதிய கூறுகள் பின்புறத்தில் சேர்க்கப்படுகின்றன.
கோலாங்கில் வரிசையை செயல்படுத்துதல்
ஒரு செயல்படுத்தல் வரிசை இன் Go எளிமையானது மற்றும் திறமையானது மற்றும் பின்வரும் நான்கு முறைகளைப் பயன்படுத்தி செயல்படுத்தலாம்.
1: துண்டுகள்
கோவில், ஏ துண்டு அளவு மாறக்கூடிய டைனமிக் வரிசை ஆகும். செயல்படுத்துவதற்கு ஏ வரிசை ஒரு பயன்படுத்தி துண்டு , பின்பகுதியில் உறுப்புகளைச் சேர்க்கலாம் துண்டு உள்ளமைக்கப்பட்ட append செயல்பாட்டைப் பயன்படுத்தி, முன்பக்கத்தில் உள்ள உறுப்புகளை அகற்றவும் துண்டு வெட்டுதல் பயன்படுத்தி.
இந்த அணுகுமுறை உருவாக்க எளிதானது மற்றும் Go இன் உள்ளமைக்கப்பட்ட ஸ்லைஸ்களுக்கு நன்றி சேர்க்கும் மற்றும் ஸ்லைசிங் செயல்பாடுகளுக்கு நல்ல செயல்திறனை வழங்குகிறது. இருப்பினும், ஒரு புதிய அடிப்படை அணிக்கு உறுப்புகளை நகலெடுப்பதை உள்ளடக்கிய ஸ்லைசிங் முறையானது செயல்திறனற்றதாக மாறும் வரிசை விரிவடைகிறது மற்றும் மீண்டும் மீண்டும் வரிசைப்படுத்துதல் செயல்பாடுகளை அவசியமாக்குகிறது.
பின்வரும் குறியீடு வரையறுக்கிறது வரிசை Go இல் ஒரு ஸ்லைஸைப் பயன்படுத்தி செயல்படுத்துதல்.
முக்கிய தொகுப்பு
இறக்குமதி 'fmt'
முக்கிய செயல்பாடு ( ) {
வரிசை := செய்ய ( [ ] இடைமுகம் { } , 0 )
வரிசை = இணைக்கவும் ( வரிசை , 'ஆங்கிலம்' )
வரிசை = இணைக்கவும் ( வரிசை , 'உருது' )
வரிசை = இணைக்கவும் ( வரிசை , 'கணிதம்' )
என்றால் மட்டுமே ( வரிசை ) > 0 {
பொருள் := வரிசை [ 0 ]
வரிசை = வரிசை [ 1 : ]
fmt Println ( பொருள் )
}
என்றால் மட்டுமே ( வரிசை ) == 0 {
fmt Println ( 'வரிசை காலியாக உள்ளது' )
} வேறு {
fmt Println ( வரிசை )
}
}
மேலே உள்ள கோ குறியீடு ஒரு ஸ்லைஸைப் பயன்படுத்தி நேரானதை உருவாக்குகிறது வரிசை தரவு அமைப்பு. தி பின்னிணைப்பு() செயல்பாடு உறுப்புகளை வரிசைப்படுத்த பயன்படுகிறது வரிசை ஸ்லைஸ், மற்றும் ஆரம்ப உறுப்பை அகற்றும் ஒரு ஸ்லைஸ் செயல்பாடு அவற்றை வரிசைப்படுத்த பயன்படுத்தப்படுகிறது. உடன் fmt.Println() , வரிசைப்படுத்தப்பட்ட உறுப்பு அச்சிடப்பட்டது. குறியீடு பின்னர் பயன்படுத்துகிறது மட்டும்() வரிசை காலியாக உள்ளதா என்பதை தீர்மானிக்க செயல்பாடு, அது இருந்தால், அது எழுதுகிறது ' வரிசை fmt.Println() செயல்பாட்டைப் பயன்படுத்தி காலியாக உள்ளது.
வெளியீடு
2: இணைக்கப்பட்ட பட்டியல்கள்
பட்டியலில் உள்ள பின்வரும் முனைக்கு மதிப்பு மற்றும் சுட்டியைக் கொண்டு செல்லும் முனைகள் இணைக்கப்பட்ட பட்டியலை உருவாக்குகின்றன. இரண்டு சுட்டிகள் மூலம், ஒன்று பட்டியலின் முன் (தலை) மற்றும் மற்றொன்று பின்புறம் (வால்) சுட்டிக்காட்டுகிறது. வரிசை இணைக்கப்பட்ட பட்டியலைப் பயன்படுத்தி. வரிசையிலிருந்து ஒரு உருப்படியை அகற்றுவது (dequeuing) பட்டியலின் முன்புறத்தில் உள்ள முனையை அகற்றுவதை உள்ளடக்குகிறது, அதே நேரத்தில் வரிசையில் ஒரு உருப்படியைச் சேர்ப்பது (வரிசைப்படுத்துவது) பட்டியலின் பின்புறத்தில் ஒரு புதிய முனையைச் சேர்ப்பதை உள்ளடக்குகிறது.
இந்த முறை திறமையான வரிசைப்படுத்துதல் மற்றும் வரிசைப்படுத்துதல் செயல்பாடுகளை அனுமதிக்கிறது, ஏனெனில் உறுப்புகள் நகலெடுக்கப்பட வேண்டிய ஸ்லைஸ் அடிப்படையிலான தீர்வுக்கு மாறாக, தலை மற்றும் வால் சுட்டிகள் மட்டுமே மாற்றப்பட வேண்டும்.
ஒரு இணைக்கப்பட்ட பட்டியலை செயல்படுத்த பயன்படுத்தவும் வரிசை கீழே கொடுக்கப்பட்டுள்ள குறியீட்டைப் பயன்படுத்தி:
முக்கிய தொகுப்புஇறக்குமதி 'fmt'
முனை வகை கட்டமைக்க {
மதிப்பு இடைமுகம் { }
அடுத்தது * முனை
}
வரிசை வகை கட்டமைக்க {
தலை * முனை
வால் * முனை
}
முக்கிய செயல்பாடு ( ) {
வரிசை := & வரிசை { தலை : பூஜ்யம் , வால் : பூஜ்யம் }
புதிய முனை := & முனை { மதிப்பு : 'ஆங்கிலம்' , அடுத்தது : பூஜ்யம் }
வரிசை. வால் = புதிய முனை
வரிசை. தலை = புதிய முனை
புதிய முனை = & முனை { மதிப்பு : 'உருது' , அடுத்தது : பூஜ்யம் }
வரிசை. வால் . அடுத்தது = புதிய முனை
வரிசை. வால் = புதிய முனை
புதிய முனை = & முனை { மதிப்பு : 'கணிதம்' , அடுத்தது : பூஜ்யம் }
வரிசை. வால் . அடுத்தது = புதிய முனை
வரிசை. வால் = புதிய முனை
என்றால் வரிசை. தலை != பூஜ்யம் {
பொருள் := வரிசை. தலை . மதிப்பு
வரிசை. தலை = வரிசை. தலை . அடுத்தது
fmt Println ( பொருள் )
}
என்றால் வரிசை. தலை == பூஜ்யம் {
fmt Println ( 'வரிசை காலியாக உள்ளது' )
}
}
Node struct ஆனது வரிசையில் உள்ள ஒவ்வொரு பொருளையும் பிரதிபலிக்கிறது மற்றும் இரண்டு புலங்களைக் கொண்டுள்ளது: பொருளின் மதிப்பைச் சேமிப்பதற்கான மதிப்பு புலம் மற்றும் வரிசையில் உள்ள அடுத்த உருப்படியை சுட்டிக்காட்டுவதற்கான அடுத்த புலம். வரிசை அமைப்பு முறையே வரிசையின் முன் மற்றும் பின்புறத்தைக் கண்காணிக்க தலை மற்றும் வால் பண்புகளைப் பயன்படுத்துகிறது. தி வால் தான் முதல் உருப்படி தலை சொத்தால் குறிக்கப்படுகிறது, அதே நேரத்தில் அதன் கடைசி உருப்படி வால் சொத்தால் குறிக்கப்படுகிறது.
தலை மற்றும் வால் அளவுருக்கள் ஆரம்பத்தில் அமைக்கப்பட்டுள்ளன பூஜ்யம் ஒரு புதிய போது வரிசை முக்கிய() செயல்பாட்டில் நிறுவப்பட்டது. தலை மற்றும் வால் சுட்டிகள் மூன்று முனைகளைச் சேர்க்க புதுப்பிக்கப்படுகின்றன வரிசை மதிப்புகளுடன் 'ஆங்கிலம்', 'உருது', மற்றும் 'கணிதம்'. தி 'ஆங்கிலம்' பொருள் அப்போது 'வரிசைப்படுத்தப்பட்ட' (அகற்றப்பட்டது) முன் இருந்து வரிசை அதன் மதிப்பைக் காட்டி, ஹெட் பாயிண்டரை பின்வரும் முனைக்கு முன்னேற்றுவதன் மூலம் வரிசை . வரிசைப்படுத்திய பிறகு, தலை பூஜ்யமாக மாறினால், வரிசை காலியாக உள்ளது என்று அர்த்தம், மேலும் செய்தி “ வரிசை காலியாக உள்ளது” என்று அச்சிடப்பட்டுள்ளது.
வெளியீடு
3: கட்டமைப்புகள்
Goவில், a எனப்படும் தனிப்பயன் தரவு கட்டமைப்பை நீங்கள் உருவாக்கலாம் கட்டமைக்க பிரதிநிதித்துவப்படுத்த a வரிசை . இது கட்டமைக்க சேமிக்க புலங்கள் இருக்க முடியும் வரிசை உருப்படிகளைச் சேர்க்க மற்றும் அகற்றுவதற்கான கூறுகள் மற்றும் முறைகள், வரிசை காலியாக உள்ளதா எனச் சரிபார்த்து, தற்போதைய வரிசை அளவைப் பெறவும்.
உருவாக்க இந்த வழி ஒரு வரிசை in Go ஒரு வசதியான மற்றும் இணைக்கப்பட்ட செயலாக்கத்தை எளிதாகப் பயன்படுத்தக்கூடிய முறைகளுடன் வழங்குகிறது, அதை மேலும் அம்சங்களுடன் விரிவுபடுத்தலாம் மற்றும் தனிப்பயனாக்கலாம். இது ஒரு நெகிழ்வான அணுகுமுறையாகும், இது செயலாக்கத்தில் மாற்றங்களைச் செய்ய அல்லது தேவைப்படும் போதெல்லாம் புதிய திறன்களைச் சேர்க்க அனுமதிக்கிறது.
ஒரு வழக்கத்தை உருவாக்குதல் கட்டமைக்க மற்ற இரண்டு வழிகளுடன் ஒப்பிடும்போது கூடுதல் குறியீட்டை எழுதும் முறைகள் அடங்கும், இது சிக்கலை அதிகரிக்கலாம். இருப்பினும், இது செயல்படுத்துவதில் அதிக நெகிழ்வுத்தன்மையையும் கட்டுப்பாட்டையும் வழங்குகிறது வரிசை .
பின்வரும் உதாரணம் ஒரு தரவு கட்டமைப்பை உருவாக்குவதைக் காட்டுகிறது வரிசை கோவில்.
முக்கிய தொகுப்புஇறக்குமதி 'fmt'
வரிசை வகை கட்டமைக்க {
பொருட்களை [ ] இடைமுகம் { }
}
செயல்பாடு ( கே * வரிசை ) என்கியூ ( பொருள் இடைமுகம் { } ) {
கே. பொருட்களை = இணைக்கவும் ( கே. பொருட்களை , பொருள் )
}
செயல்பாடு ( கே * வரிசை ) டிக்யூ ( ) இடைமுகம் { } {
என்றால் மட்டுமே ( கே. பொருட்களை ) == 0 {
திரும்ப பூஜ்யம்
}
பொருள் := கே. பொருட்களை [ 0 ]
கே. பொருட்களை = கே. பொருட்களை [ 1 : ]
திரும்ப பொருள்
}
செயல்பாடு ( கே * வரிசை ) காலியாக உள்ளது ( ) பூல் {
திரும்ப மட்டுமே ( கே. பொருட்களை ) == 0
}
செயல்பாடு ( கே * வரிசை ) அளவு ( ) முழு எண்ணாக {
திரும்ப மட்டுமே ( கே. பொருட்களை )
}
முக்கிய செயல்பாடு ( ) {
வரிசை := & வரிசை { பொருட்களை : செய்ய ( [ ] இடைமுகம் { } , 0 ) }
வரிசை. என்கியூ ( 'ஆங்கிலம்' )
வரிசை. என்கியூ ( 'உருது' )
வரிசை. என்கியூ ( 'கணிதம்' )
பொருள் := வரிசை. டிக்யூ ( )
fmt Println ( பொருள் )
என்றால் வரிசை. காலியாக உள்ளது ( ) {
fmt Println ( 'வரிசை காலியாக உள்ளது' )
}
அளவு := வரிசை. அளவு ( )
fmt Println ( 'வரிசையின் அளவு:' , அளவு )
}
மேலே உள்ள குறியீட்டில், உருப்படியின் ஸ்லைஸில் ஒரு உருப்படி இணைக்கப்பட்டுள்ளது என்கியூ() முறை, இது இறுதிவரை நகர்த்துகிறது வரிசை . அதன் தொடர்ச்சியாக ஃபர்ஸ்ட்-இன், ஃபர்ஸ்ட்-அவுட் (FIFO) கொள்கை, தி Dequeue() முறையின் முன்பகுதியில் இருந்து ஒரு பொருளை எடுக்கிறது வரிசை மற்றும் அதை திருப்பி கொடுக்கிறது. உருப்படியின் துண்டின் நீளம் ஒரு பகுதியாக சரிபார்க்கப்பட்டது காலியாக உள்ளது() என்பதை அறிய முறையின் சோதனை வரிசை காலியாக உள்ளது. உருப்படிகளின் நீளத்தை திருப்பித் தருவதன் மூலம், தி அளவு() முறை மின்னோட்டத்தை வழங்குகிறது வால் தான் அளவு.
முக்கிய() செயல்பாடு பயன்படுத்துகிறது வரிசை அமைப்பு ஒரு புதிய உருவாக்க வரிசை , அதில் கூறுகளைச் சேர்க்கவும், அதிலிருந்து உருப்படிகளை அகற்றவும், என்பதை தீர்மானிக்கவும் வரிசை காலியாக உள்ளது, அதன் அளவைக் கணக்கிடுங்கள்.
வெளியீடு
4: சேனல்கள்
Go இல், உள்ளமைக்கப்பட்ட சேனல் வகையை செயல்படுத்த பயன்படுத்தலாம் வரிசை தரவு அமைப்பு. எந்த நேரத்திலும் வரிசைப்படுத்தக்கூடிய உறுப்புகளின் எண்ணிக்கையைக் கட்டுப்படுத்த, இடையக அளவுடன் சேனலை உருவாக்கலாம். ஒரு உறுப்பு சேர்க்க வரிசை , இதைப் பயன்படுத்தி சேனலுக்கு அனுப்பலாம் <- ஆபரேட்டர், வரிசையில் இருந்து ஒரு உறுப்பை அகற்றும் போது, அதை அதே ஆபரேட்டரைப் பயன்படுத்தி சேனலில் இருந்து பெறலாம்.
ஒரே நேரத்தில் அணுகக்கூடிய சூழ்நிலைகளில் இந்த அணுகுமுறை மிகவும் பயனுள்ளதாக இருக்கும் வரிசை ஒரே நேரத்தில் பயன்படுத்துவதற்கு சேனல்கள் இயல்பாகவே பாதுகாப்பானவை என்பதால், தேவை.
Go சேனல்கள் தட்டச்சு செய்யப்பட்டுள்ளன என்பதை நினைவில் கொள்வது அவசியம். ஒரு குறிப்பிட்ட வகையின் மதிப்புகளை ஒரு சேனலின் மூலம் மட்டுமே நீங்கள் அனுப்ப முடியும், மேலும் அந்த வகையின் மதிப்புகளை மட்டுமே சேனலில் இருந்து பெற முடியும்.
இது ஒரு சேனலை எவ்வாறு உருவாக்குவது என்பதற்கான விளக்கமாகும் வரிசை Go இல் தரவு அமைப்பு.
முக்கிய தொகுப்புஇறக்குமதி (
'fmt'
'நேரம்'
)
வரிசை வகை கட்டமைக்க {
பொருட்கள் chaninterface { }
}
funcNewQueue ( ) * வரிசை {
கே := & வரிசை {
பொருட்களை : செய்ய ( சான் இடைமுகம் { } ) ,
}
செல் கே. செயல்முறை பொருட்கள் ( )
திரும்ப கே
}
செயல்பாடு ( கே * வரிசை ) செயல்முறை பொருட்கள் ( ) {
க்கான பொருள் := வரம்பு q. பொருட்களை {
என்றால் பொருள் == 'ஆங்கிலம்' {
fmt Println ( 'வரிசைப்படுத்தப்பட்டது:' , பொருள் )
}
}
}
செயல்பாடு ( கே * வரிசை ) என்கியூ ( பொருள் இடைமுகம் { } ) {
கே. பொருட்களை <- பொருள்
}
ஃபங்க்மைன் ( ) {
வரிசை := புதிய வரிசை ( )
வரிசை. என்கியூ ( 'ஆங்கிலம்' )
வரிசை. என்கியூ ( 'உருது' )
வரிசை. என்கியூ ( 'கணிதம்' )
நேரம் . தூங்கு ( 2 * நேரம் . இரண்டாவது )
}
மேலே உள்ள குறியீடு a ஐ உருவாக்குகிறது வரிசை அமைப்பு ஒரே புலத்துடன் பொருட்களை இது ஒரு சேனல் இடைமுகம்{} வகை. தி புதிய வரிசை() செயல்பாடு ஒரு புதிய நிகழ்வை உருவாக்குகிறது வரிசை மற்றும் அதன் துவக்கம் 'பொருட்களை' புதிய தடையற்ற சேனலுடன் புலம். வரிசையில் சேர்க்கப்பட்ட பொருட்களைப் பயன்படுத்தி செயலாக்க புதிய goroutine ஐயும் இது தொடங்குகிறது செயல்முறைப் பொருட்கள்() செயல்பாடு. தி செயல்முறைப் பொருட்கள்() பெறப்பட்ட உருப்படி சமமாக இருந்தால் செயல்பாடு சரிபார்க்கிறது 'ஆங்கிலம்' மற்றும் அந்த உருப்படிக்கு மட்டும் ஒரு செய்தியை பணியகத்திற்கு அச்சிடுகிறது. தி என்கியூ() செயல்பாடு புதிய உருப்படிகளை வரிசையில் சேர்க்க பயன்படுகிறது.
வெளியீடு
முடிவுரை
வரிசை என்பது Go இல் உள்ள ஒரு அத்தியாவசிய தரவு கட்டமைப்பாகும், இது ஒரு குறிப்பிட்ட வரிசையில் கூறுகளைச் சேமிக்கவும் மீட்டெடுக்கவும் பயன்படுகிறது. ஒரு செயல்படுத்தல் வரிசை கோவில் நூல்-பாதுகாப்பானது, நிரல்களில் ஒத்திசைவைச் செயல்படுத்துவதற்கான சிறந்த தேர்வாக அமைகிறது. இது துண்டுகள், இணைக்கப்பட்ட பட்டியல்கள், கட்டமைப்புகள் மற்றும் சேனல்களைப் பயன்படுத்தி செயல்படுத்தப்படலாம். மேலே கொடுக்கப்பட்ட வழிகாட்டுதல்களில் முழு விவரங்கள் ஏற்கனவே வழங்கப்பட்டுள்ளன.