Sobes.tech
Junior — Middle

Ի՞նչ է ներկայացնում [] օպերատորի գործարկման արդյունքը տողային տվյալների տիպի համար։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, օպերատոր [] տիպի տվյալների համար օգտագործվում է տողից բայթների կտոր ստանալու կամ մեկ բայթ առանձին ըստ ինդեքսի։ Go-ում տողը անփոփոխ բայթների անընդհատականություն է (UTF-8): Երբ մուտք ենք գործում str[i], վերադարձվում է byte տիպի բայթ (uint8-ի մականուն), և ոչ թե նիշ սովորական իմաստով, քանի որ Unicode նիշերը կարող են զբաղեցնել մի քանի բայթ։

Օրինակ՝

s := "Привет"
fmt.Println(s[0])       // Ցուցադրում է բայթ, որը համապատասխանում է առաջին մասի նիշի 'П'
fmt.Println(string(s[0])) // Ցուցադրում է սխալ նիշ, քանի որ դա ամբողջական UTF-8 նիշ չէ

// Նիշեր (runes) ստանալու համար անհրաժեշտ է փոխարկել տողը rune-ների կտորին՝
r := []rune(s)
fmt.Println(string(r[0])) // Ցուցադրում է 'П'

Այսպիսով, օպերատոր [] տողերի համար վերադարձնում է բայթ ըստ ինդեքսի, ոչ թե Unicode նիշ։