தொகுதி பாடங்கள் (1/5)
நிலையான நீள வரிசைகள்
Go இல் வரிசை ஒரு நிலையான நீளத்தைக் கொண்டுள்ளது, அதன் வகையாக சுடப்பட்டது: [N]T.
இது பயன்பாட்டுக் குறியீட்டில் அரிதாகவே நேரடியாகப் பயன்படுத்தப்படும் ஒரு பழமையானது - நீங்கள் செய்வீர்கள்
கிட்டத்தட்ட எப்போதும் துண்டுகள் (அடுத்த பாடம்), அவை மாறும்
வரிசைகள் மீது பார்வைகள்.
இருப்பினும், வரிசைகளை நன்கு புரிந்துகொள்வது அவசியம்: Go இல் உள்ள அனைத்தும் கட்டமைக்கப்பட்டுள்ளன அவர்கள் மேல்.
பிரகடனம் மற்றும் துவக்கம்
var a [3]int = [3]int{10, 20, 30}
b := [3]int{1, 2, 3} // inference with :=
c := [3]int{} // all zero: [0, 0, 0]
d := [...]int{1, 2, 3, 4} // length inferred = 4ஒரு அணிவரிசையின் பூஜ்ஜிய மதிப்பு என்பது ஒவ்வொன்றிலும் அறிவிக்கப்பட்ட நீளத்தின் வரிசையாகும் உறுப்பு அதன் பூஜ்ஜிய மதிப்பில்:
var nums [5]int // [0 0 0 0 0]அட்டவணைப்படுத்துதல் மற்றும் len
a := [3]int{10, 20, 30}
fmt.Println(a[0]) // 10
a[1] = 99
fmt.Println(len(a)) // 3எல்லைக்கு வெளியே அணுகல் இயக்க நேர பீதியை ஏற்படுத்துகிறது (அமைதியாக வரையறுக்கப்படாதது அல்ல C இல் உள்ளதைப் போல).
நீளம் வகையின் ஒரு பகுதியாகும்
var a [3]int
var b [4]int
// a = b // ERROR: different types[3]int மற்றும் [4]int ஆகியவை தனிப்பட்ட வகைகளாகும், இரண்டுமே வைத்திருந்தாலும்
int. இதனால்தான் வரிசைகள் செயல்பாடுகளுக்கு எப்போதாவது அனுப்பப்படுகின்றன: நீங்கள் செய்ய வேண்டும்
அளவுரு வகைக்கு நீளத்தை கடின குறியீடு.
மதிப்பின்படி நகலெடுக்கவும்
துண்டுகள் (குறிப்பு) மற்றும் வரைபடங்கள் (குறிப்பு) போலல்லாமல், வரிசைகள் ** மூலம் நகலெடுக்கப்படுகின்றன மதிப்பு**:
a := [3]int{1, 2, 3}
b := a // copy
b[0] = 99
fmt.Println(a[0]) // 1 — a is unchangedஒரு செயல்பாட்டிற்கு செல்லும் போது இது பொருந்தும்: செயல்பாடு அதன் பெறுகிறது சொந்த நகல்.
வரிசைகளை எப்போது பயன்படுத்த வேண்டும்?
- தொகுக்கும் நேரத்தில் அறியப்பட்ட நிலையான அளவு இடையகங்கள் (எ.கா.
[16]byteMD5க்கு). - கூட்டு வரைபட விசைகள் (துண்டுகள் "ஒப்பிடக்கூடியவை" அல்ல, வரிசைகள்).
- அதீத செயல்திறன் (மறைமுகம் இல்லை, கேச் நட்பு).
99% குறியீட்டிற்கு: துண்டுகளைப் பயன்படுத்தவும்.
முயற்சி செய்து பாருங்கள்
10, 20, 30 மதிப்புகளுடன் 3 இன்ட்களின் வரிசையை அறிவித்து அதன் நீளத்தை அச்சிடவும்.
குறிப்பைக் காட்டு
வரிசை எழுத்து: `[3]int{a, b, c}`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
b ஐ 5 ints (அனைத்தும் பூஜ்ஜியம்) வரிசையாக அறிவித்து, 99ஐ நிலை 2க்கு ஒதுக்கவும்.
குறிப்பைக் காட்டு
`var b [5]int` என்பது [0 0 0 0 0] எனத் தொடங்குகிறது.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
[3]int மற்றும் [4]int ஒரே வகையா?
var a [3]int
var b [4]int
// a = b ?மறுபரிசீலனை
[N]T: நிலையான நீளம், வகையின் ஒரு பகுதி.- பூஜ்ஜிய மதிப்பு: ஒவ்வொரு உறுப்பும் அதன் பூஜ்ஜிய மதிப்பில்.
[...]int{...}தொகுப்பி நீளத்தை ஊகிக்க உதவுகிறது.- மதிப்பின்படி நகலெடுக்கவும் (உள்ளே செயல்பாடுகள் உட்பட).
- எல்லைக்கு வெளியே = பீதி, வரையறுக்கப்படவில்லை.
- நடைமுறையில், ஸ்லைஸ்ஐப் பயன்படுத்தவும், அவை வரிசைகள் மீது பார்வைகளாகும்.