Sobes.tech
Junior — Middle

Mida esindab [] operaatori täitmise tulemus string-tüüpi andmetüübi jaoks?

sobes.tech AI

Vastus AI-lt

Go keeles, [] operaatorit kasutatakse stringi andmetüübi puhul stringi baitide lõigu saamiseks või üksiku baitide saamiseks indeksiga. Go keeles on string muutumatu baitide järjestus (UTF-8). Kui pääseb ligi str[i], tagastatakse bait byte tüüpi (uint8 lühend), mitte märk tavalises mõttes, kuna Unicode märgid võivad hõlmata mitut baiti.

Näide:

s := "Привет"
fmt.Println(s[0])       // Kuvab bait, mis vastab esimesele osale märgist 'П'
fmt.Println(string(s[0])) // Kuvab vale märgi, kuna see ei ole täielik UTF-8 märk

// Märkide (rune) saamiseks tuleb stringi teisendada rune-ide lõiguks:
r := []rune(s)
fmt.Println(string(r[0])) // Kuvab 'П'

Seega, stringide puhul tagastab [] operaator indeksiga bait, mitte Unicode märki.