четверг, 13 июня 2019 г.

Спецификация Go: преобразования в и из строкового типа

1. Преобразование целочисленного значения со знаком или без знака в строковый тип дает строку, содержащую представление целого числа в UTF-8. Значения за пределами диапазона допустимых кодовых точек Unicode преобразуются в "\uFFFD".

string('a')       // "a"
string(-1)        // "\ufffd" == "\xef\xbf\xbd"
string(0xf8)      // "\u00f8" == "ø" == "\xc3\xb8"
type MyString string
MyString(0x65e5)  // "\u65e5" == "日" == "\xe6\x97\xa5"

2. Преобразование среза байтов в строковый тип дает строку, последовательные байты которой являются элементами среза.

string([]byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'})   // "hellø"
string([]byte{})                                     // ""
string([]byte(nil))                                  // ""

type MyBytes []byte
string(MyBytes{'h', 'e', 'l', 'l', '\xc3', '\xb8'})  // "hellø"

3. Преобразование среза рун в строковый тип дает строку, которая является объединением отдельных значений рун, преобразованных в строки.

string([]rune{0x767d, 0x9d6c, 0x7fd4})   // "\u767d\u9d6c\u7fd4" == "白鵬翔"
string([]rune{})                         // ""
string([]rune(nil))                      // ""

type MyRunes []rune
string(MyRunes{0x767d, 0x9d6c, 0x7fd4})  // "\u767d\u9d6c\u7fd4" == "白鵬翔"

4. Преобразование значения типа строки в тип среза байтов дает срез, последовательными элементами которого являются байты строки.

[]byte("hellø")   // []byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}
[]byte("")        // []byte{}

MyBytes("hellø")  // []byte{'h', 'e', 'l', 'l', '\xc3', '\xb8'}

5. Преобразование значения типа строки в срез типа руны дает срез, содержащий отдельные кодовые точки Unicode строки.

[]rune(MyString("白鵬翔"))  // []rune{0x767d, 0x9d6c, 0x7fd4}
[]rune("")                 // []rune{}

MyRunes("白鵬翔")           // []rune{0x767d, 0x9d6c, 0x7fd4}


Читайте также:


Комментариев нет:

Отправить комментарий