Junior
Hogyan működnek a stringek a Go nyelvben?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a sztringek változatlan byte-sorozatok. Ezek egy "byte-szeletet" ([]byte) képviselnek, amely garantálja a változatlanságot.
Fő jellemzők:
- Változatlanság: A létrehozás után a sztring nem módosítható. Bármilyen művelet, amely módosításnak tűnik, valójában egy új sztringet hoz létre.
- Ábrázolás: Alapértelmezés szerint a Go sztringjei UTF-8 kódolt szöveget képviselnek. Ezek azonban egyszerű byte-sorozatok; az értelmezés UTF-8-ként történik, amikor runékkal dolgozunk.
- Runék: A Unicode karakterek Go-ban a
runetípusban vannak, amely azint32aliasa. Arangehasználatával végzett iteráció automatikusan dekódolja az UTF-8-at, és rune-okat, valamint azok kezdő indexeit adja meg byte-okban. - Hossz: A
len(s)függvény a sztring byte-számát adja vissza, nem a karakterek (rune-ok) számát. A rune-ok számának meghatározásához használja autf8.RuneCountInString(s)-et vagy arange-et. - Összefűzés: A sztringek összefűzéséhez az
+operátort használjuk. Ez egy új sztringet hoz létre. Sok sztring hatékony összefűzéséhez ajánlott astrings.Builderhasználata.
Példák:
// Sztring deklarálása
str := "Hello, 世界"
// Sztring hossza (byte-ban)
byteLen := len(str) // 13 (H(1) e(1) l(1) l(1) o(1) ,(1) (1) 世(3) 界(3))
// Iterálás runékon
runeCount := 0
for index, runeValue := range str {
// index - a rune kezdő indexe byte-okban
// runeValue - a rune
runeCount++
// fmt.Printf("Index: %d, Runa: %c (Érték: %d)\n", index, runeValue, runeValue)
}
// rune-ok száma (9)
// Byte-hoz való hozzáférés index alapján
// Figyelem: ez egy byte, nem egy karakter!
// byteAtIndex := str[0] // 'H'
// byteAtIndex := str[7] // A '世' karakter kezdő byte-ja
// Sztringek összefűzése
newStr := str + "!"
// A hatékony összefűzéshez a strings.Builder használata
// import "strings"
var builder strings.Builder
builder.WriteString("Hello, ")
builder.WriteString("World")
efficientStr := builder.String() // "Hello, World"