Строки в Golang
Поговорим о строках в Go.
В таких языках, как Java, строка — это просто набор символов типа char.
Но в Go строка — это UTF-8 кодировка символов Unicode.
Что такое Unicode?
Компьютеры понимают только числа, поэтому в ранних английских языках программирования требовался способ представлять символы в виде чисел. Так появился ASCII — формат, который сопоставлял каждой букве английского алфавита определённое число.
Но у ASCII была проблема: он использовал всего 7 бит, то есть максимум 127 символов. Никаких эмоджи, китайских иероглифов или, скажем, букв хинди туда не влезало.
Чтобы это исправить, придумали Unicode — систему, которая сопоставляет любой символ любого языка или даже эмодзи с уникальным числом.
Что такое UTF-8?
Это просто способ хранить Unicode-символы в байтах. То есть UTF-8 — это формат, в котором символы Unicode записываются в память.
Строка в Go — это не обычная строка!
На самом деле строка в Go — это дескриптор, по сути, структура из двух полей:
- Указатель на место в памяти, где хранятся данные строки;
- Длина строки.
И да, как и в Java или Python, строки в Go не иммутабильны.
package main
import (
"fmt"
)
func main() {
fmt.Prinlt("Ok Let's Go!")
}