Back to blog

Строки в Golang

nsvk13

Поговорим о строках в Go. В таких языках, как Java, строка — это просто набор символов типа char. Но в Go строка — это UTF-8 кодировка символов Unicode.


Что такое Unicode?

Компьютеры понимают только числа, поэтому в ранних английских языках программирования требовался способ представлять символы в виде чисел. Так появился ASCII — формат, который сопоставлял каждой букве английского алфавита определённое число.

Но у ASCII была проблема: он использовал всего 7 бит, то есть максимум 127 символов. Никаких эмоджи, китайских иероглифов или, скажем, букв хинди туда не влезало.

Чтобы это исправить, придумали Unicode — систему, которая сопоставляет любой символ любого языка или даже эмодзи с уникальным числом.


Что такое UTF-8?

Это просто способ хранить Unicode-символы в байтах. То есть UTF-8 — это формат, в котором символы Unicode записываются в память.


Строка в Go — это не обычная строка!

На самом деле строка в Go — это дескриптор, по сути, структура из двух полей:

  1. Указатель на место в памяти, где хранятся данные строки;
  2. Длина строки.

И да, как и в Java или Python, строки в Go не иммутабильны.

package main

import (
    "fmt"
)

func main() {
    fmt.Prinlt("Ok Let's Go!")
}