கோலாங்கில் பிரதிபலிப்பு என்றால் என்ன

Kolankil Piratipalippu Enral Enna



கோலாங்கில் உள்ள பிரதிபலிப்பு ஒரு நிரலை இயக்க நேரத்தில் தரவு கட்டமைப்புகள், வகைகள் மற்றும் மதிப்புகளை ஆய்வு செய்து மாற்ற அனுமதிக்கிறது. இயக்க நேரத்தில் எந்த மாறியின் வகை மற்றும் மதிப்பை ஆராயவும், வகைகளின் புதிய நிகழ்வுகளை உருவாக்கவும் மற்றும் ஏற்கனவே உள்ள மாறிகளின் மதிப்பை மாற்றவும் அனுமதிக்கும் செயல்பாடுகளின் தொகுப்பை இது வழங்குகிறது. இந்தக் கட்டுரை பிரதிபலிப்பு தொகுப்பில் உள்ள பல்வேறு கோலாங் செயல்பாடுகளை உள்ளடக்கியது.

பொருளடக்கம்

Go என்பது நிலையான தட்டச்சு செய்யப்பட்ட மொழியாகும், எனவே ஒரு மாறியின் வகை தொகுக்கும் நேரத்தில் தெரிந்திருக்க வேண்டும். இருப்பினும், சில சூழ்நிலைகளில், நிரல் செயல்படுத்தப்படும் வரை அதன் வகைகளைத் தீர்மானிக்க முடியாத மதிப்புகளைக் கையாள வேண்டியது அவசியமாக இருக்கலாம்.







எடுத்துக்காட்டாக, வெவ்வேறு வகையான வாதங்களுடன் வேலை செய்யக்கூடிய ஒரு செயல்பாட்டை நாம் எழுத வேண்டியிருக்கலாம் அல்லது அறியப்படாத வகைகளின் தரவை வரிசையாக்கம் செய்து சீரமைக்க வேண்டியிருக்கலாம். இங்குதான் கோலாங்கில் பிரதிபலிப்பு தொகுப்பு பயன்படுத்தப்படுகிறது.



கோவில் தொகுப்பைப் பிரதிபலிக்கவும்

பிரதிபலிப்பு தொகுப்பு செயல்பாடுகளின் தொகுப்பை வழங்குகிறது, இது அவற்றின் வகைகளைப் பொருட்படுத்தாமல், இயக்க நேரத்தில் மதிப்புகளை ஆய்வு செய்து கையாள அனுமதிக்கிறது. இந்த செயல்பாடுகள் மூலம், எந்த மாறியின் வகை மற்றும் மதிப்பு பற்றிய தகவலைப் பெறலாம், வகைகளின் புதிய நிகழ்வுகளை உருவாக்கலாம் மற்றும் ஏற்கனவே உள்ள மாறிகளின் மதிப்பை மாற்றலாம்.



கோலாங்கில் உள்ள பிரதிபலிப்பு தொகுப்பு இரண்டு வகைகளைக் கொண்டுள்ளது: வகை மற்றும் மதிப்பு. ஒரு வகை, எண்ணாக, சரம் அல்லது தனிப்பயன் அமைப்பு போன்ற Go வகையைக் குறிக்கிறது. ஒரு மதிப்பு 42 அல்லது 'ஹலோ' போன்ற ஒரு குறிப்பிட்ட வகையின் மதிப்பைக் குறிக்கிறது.





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

பின்வரும் பிரிவுகளில், பிரதிபலிப்பு தொகுப்பில் பொதுவாகப் பயன்படுத்தப்படும் சில செயல்பாடுகளை ஆராய்வோம்.



பிரதிபலிக்கும். நகல்() செயல்பாடு

பிரதிபலிப்பு தொகுப்பின் பிரதிபலிக்கும்.Copy() செயல்பாடு ஒரு ஸ்லைஸின் மதிப்புகளை மற்றொரு ஸ்லைஸில் நகலெடுக்கப் பயன்படுகிறது. இது இரண்டு அளவுருக்கள், dst மற்றும் src ஆகியவற்றை எடுக்கும், இவை இரண்டும் ஒரே உறுப்பு வகையுடன் ஸ்லைஸ் மதிப்புகளாக இருக்க வேண்டும். செயல்பாடு src ஸ்லைஸிலிருந்து dst ஸ்லைஸில் மதிப்புகளை நகலெடுக்கிறது மற்றும் நகலெடுக்கப்பட்ட உறுப்புகளின் எண்ணிக்கையை வழங்குகிறது.

பிரதிபலிக்கும்.Copy() செயல்பாடு பின்வரும் எடுத்துக்காட்டில் நிரூபிக்கப்பட்டுள்ளது:

தொகுப்பு முக்கிய

இறக்குமதி (

'fmt'
'பிரதிபலிப்பு'
)
செயல்பாடு முக்கிய () {
src := [] முழு எண்ணாக { 1 , 2 , 3 , 4 , 5 }
dst := செய்ய ([] முழு எண்ணாக , மட்டுமே ( src ))
n := பிரதிபலிக்கின்றன . நகலெடுக்கவும் ( பிரதிபலிக்கின்றன . மதிப்பு ( dst ), பிரதிபலிக்கின்றன . மதிப்பு ( src ))
fmt . Println ( n ) // வெளியீடு: 5
fmt . Println ( dst ) // வெளியீடு: [1 2 3 4 5]


}

இந்த எடுத்துக்காட்டில், சில முழு எண் மதிப்புகளுடன் ஒரு மூல ஸ்லைஸ் src ஐ உருவாக்குகிறோம், மேலும் src இன் அதே நீளம் கொண்ட டெஸ்டினேஷன் ஸ்லைஸ் dst ஐ உருவாக்குகிறோம். பின் நாம் src இலிருந்து dst க்கு மதிப்புகளை நகலெடுத்து, நகலெடுக்கப்பட்ட உறுப்புகளின் எண்ணிக்கையை (n) மற்றும் dst ஸ்லைஸின் உள்ளடக்கங்களை அச்சிட பிரதிபலிக்கும். Copy() என்று அழைக்கிறோம்.

பிரதிபலிக்கும்.DeepEqual() செயல்பாடு

பிரதிபலிப்பு தொகுப்பின் பிரதிபலிக்கும்.DeepEqual() செயல்பாடு சமத்துவத்திற்கான இரண்டு மதிப்புகளை ஒப்பிட பயன்படுகிறது. இந்தச் சார்பு இரண்டு உள்ளீட்டு அளவுருக்களைக் கொண்டுள்ளது, அவை a மற்றும் b, இவை இரண்டும் எந்த வகையிலும் எந்த மதிப்பிலும் இருக்கலாம். a மற்றும் b ஆழமாக சமமாக இருந்தால் சார்பு உண்மையாக இருக்கும், அதாவது அவற்றின் அடிப்படை மதிப்புகள் மீண்டும் சமமாக இருக்கும். இல்லையெனில், அது பொய்யாகிவிடும்.

பிரதிபலிக்கும்.DeepEqual() எவ்வாறு பயன்படுத்துவது என்பதை பின்வரும் உதாரணம் காட்டுகிறது:

தொகுப்பு முக்கிய

இறக்குமதி (

'fmt'
'பிரதிபலிப்பு'
)
செயல்பாடு முக்கிய () {
:= [] முழு எண்ணாக { 1 , 2 , 3 }
பி := [] முழு எண்ணாக { 1 , 2 , 3 }
என்றால் பிரதிபலிக்கின்றன . ஆழமான சமம் ( , பி ) {
fmt . Println ( 'a மற்றும் b சமம்' )
} வேறு {
fmt . Println ( 'a மற்றும் b சமமாக இல்லை' )
}


}

இந்த எடுத்துக்காட்டில், ஒரே முழு எண் மதிப்புகளுடன் a மற்றும் b இரண்டு துண்டுகளை உருவாக்குகிறோம். சமத்துவத்திற்காக a மற்றும் b ஐ ஒப்பிட்டு முடிவை அச்சிட நாம் பிரதிபலிக்கும். DeepEqual() என்று அழைக்கிறோம்.

பிரதிபலிக்கும்.Swapper() செயல்பாடு

பிரதிபலிப்பு தொகுப்பின் பிரதிபலிக்கும்.Swapper() செயல்பாடு ஒரு ஸ்லைஸின் உறுப்புகளை மாற்றக்கூடிய ஒரு செயல்பாட்டை திரும்பப் பெற பயன்படுகிறது. இது ஒரு ஒற்றை அளவுருவை எடுத்துக்கொள்கிறது, v, இது ஒரு ஸ்லைஸ் மதிப்பாக இருக்க வேண்டும். செயல்பாடு i மற்றும் j ஆகிய இரண்டு முழு எண் அளவுருக்களை எடுக்கும் ஒரு செயல்பாட்டை வழங்குகிறது, மேலும் i மற்றும் j நிலைகளில் ஸ்லைஸின் கூறுகளை மாற்றுகிறது.

பிரதிபலிக்கும்.Swapper() இன் பயன்பாட்டை பின்வரும் உதாரணத்தின் மூலம் நிரூபிக்க முடியும்:

தொகுப்பு முக்கிய

இறக்குமதி (

'fmt'
'பிரதிபலிப்பு'
)
செயல்பாடு முக்கிய () {
கள் := [] முழு எண்ணாக { 1 , 2 , 3 , 4 , 5 }
இடமாற்று := பிரதிபலிக்கின்றன . இடமாற்றம் செய்பவர் ( கள் )
இடமாற்று ( 1 , 3 )
fmt . Println ( கள் ) // வெளியீடு: [1 4 3 2 5]


}

இந்த எடுத்துக்காட்டில், சில முழு எண் மதிப்புகளுடன் s என்ற ஸ்லைஸை உருவாக்கினோம். ஸ்லைஸின் கூறுகளை மாற்றக்கூடிய செயல்பாட்டு இடமாற்றத்தைப் பெற, நாம் பிரதிபலிக்கும்.Swapper() என்று அழைக்கிறோம். s ஸ்லைஸின் 1 மற்றும் 3 நிலைகளில் உள்ள உறுப்புகளை இடமாற்றம் செய்து முடிவை அச்சிட ஸ்வாப்பைப் பயன்படுத்துகிறோம்.

பிரதிபலிக்கும்.TypeOf() செயல்பாடு

ஒரு மதிப்பின் வகையைப் பெற பிரதிபலிக்கும்.TypeOf() பயன்படுத்தப்படுகிறது. இந்த செயல்பாடு எந்த வகை அல்லது மதிப்பாக இருக்கக்கூடிய ஒற்றை அளவுரு 'v' ஐ ஏற்றுக்கொள்கிறது. செயல்பாடு பிரதிபலிப்பைத் தருகிறது. மதிப்பின் வகையைக் குறிக்கும் வகை மதிப்பை வழங்குகிறது.

Reflex.TypeOf() இன் பயன்பாட்டை பின்வரும் உதாரணத்தின் மூலம் நிரூபிக்கலாம்:

தொகுப்பு முக்கிய

இறக்குமதி (

'fmt'
'பிரதிபலிப்பு'
)
செயல்பாடு முக்கிய () {
இருந்தது எக்ஸ் மிதவை64 = 3 . 14
டி := பிரதிபலிக்கின்றன . வகை ( எக்ஸ் )
fmt . Println ( டி ) // வெளியீடு: float64


}

இந்த எடுத்துக்காட்டில், 3.14 மதிப்புடன் float64 மாறி x ஐ உருவாக்குகிறோம். x இன் வகையைப் பெறுவதற்குப் பின் நாம் reflect.TypeOf() என்று அழைக்கிறோம் மற்றும் முடிவை ஒரு பிரதிபலிப்பில் சேமிக்கிறோம். வகை மாறி t. float64 என்ற t இன் மதிப்பை அச்சிடுகிறோம்.

பிரதிபலிக்கிறது.ValueOf() செயல்பாடு

பிரதிபலிக்கும்.ValueOf() ஒரு பிரதிபலிப்பைப் பெறலாம்.ஒரு மதிப்பின் மதிப்பு பிரதிநிதித்துவம். இது ஒரு ஒற்றை அளவுரு v ஆகும், இது எந்த வகையிலும் எந்த மதிப்பாகவும் இருக்கலாம். செயல்பாடு பிரதிபலிக்கும்.மதிப்பு மதிப்பை உள்ளீட்டு அளவுருவின் மதிப்பைக் குறிக்கும்.

பிரதிபலிக்கும்.ValueOf() இன் பயன்பாட்டை பின்வரும் உதாரணத்தின் மூலம் நிரூபிக்க முடியும்:

தொகுப்பு முக்கிய

இறக்குமதி (

'fmt'
'பிரதிபலிப்பு'
)
செயல்பாடு முக்கிய () {
இருந்தது எக்ஸ் மிதவை64 = 3 . 14
உள்ளே := பிரதிபலிக்கின்றன . மதிப்பு ( எக்ஸ் )
fmt . Println ( உள்ளே ) // வெளியீடு: 3.14

}

இந்த எடுத்துக்காட்டில், 3.14 மதிப்புடன் float64 மாறி x ஐ உருவாக்குகிறோம். x இன் பிரதிபலிப்பு-மதிப்புப் பிரதிநிதித்துவத்தைப் பெற, பிரதிபலிப்பு-மதிப்பு மாறி v இல் முடிவைச் சேமிப்பதற்கு, நாம் reflect.ValueOf() என்று அழைக்கிறோம். v இன் மதிப்பை அச்சிடுகிறோம், இது 3.14 ஆகும்.

பிரதிபலிப்பு தொகுப்பு குறிப்பிடப்பட்டவற்றிற்கு அப்பால் பல செயல்பாடுகளை வழங்குகிறது, மேலும் இவை சில எடுத்துக்காட்டுகள். பிரதிபலிப்பு தொகுப்பால் வழங்கப்படும் செயல்பாடுகளைப் பயன்படுத்துவதன் மூலம், தொகுக்கும் நேரத்தில் வகையை அறியாமல், எந்த வகையின் மதிப்புகளுடனும் வேலை செய்யக்கூடிய குறியீட்டை உருவாக்கலாம்.

முடிவுரை

கோலாங்கில் உள்ள பிரதிபலிப்பு ஒரு நிரலை இயக்க நேரத்தில் தரவு கட்டமைப்புகள், வகைகள் மற்றும் மதிப்புகளை ஆய்வு செய்து மாற்ற அனுமதிக்கிறது. இது பிரதிபலிப்பு தொகுப்பு மூலம் செயல்படுத்தப்படுகிறது, இது வகைகள் மற்றும் மதிப்புகளை ஆய்வு செய்வதற்கும் கையாளுவதற்கும் செயல்பாடுகளை வழங்குகிறது. இடைமுகங்கள், அறியப்படாத வகைகள் அல்லது பொதுவான செயல்பாடுகளைச் செயல்படுத்த வேண்டிய போது பிரதிபலிப்பு மிகவும் பயனுள்ளதாக இருக்கும். பிரதிபலிப்பு தொகுப்பு, பிரதிபலிப்பு வகை மற்றும் மதிப்பு மற்றும் டைனமிக் வகை மற்றும் மதிப்பு உள்ளிட்ட கோலாங்கில் பிரதிபலிப்பு அடிப்படைகளை இந்தக் கட்டுரை விவாதித்தது.