Спецификация языка программирования Go
Для операторов
Для операторов с предложением диапазона
Для операторастроковое значение, предложение «range» перебирает кодовые точки Unicode в строке, начиная с байтового индекса 0. В последовательных итерациях значение индекса будет индексом первого байта последовательных кодированных точек UTF-8 в строкеи второе значение типа rune будет значением соответствующей кодовой точки.Если итерация встречает недопустимую последовательность UTF-8, второе значение будет 0xFFFD, символ замены Unicode, и следующая итерация будет продвигать один байт в строке.
Естьбез противоречий.
В Go rune
, кодовая точка Unicode, является псевдонимом для int32
.
Go не является старым языком, ограниченным набором символов ASCII.Как и большинство [всех?] Современных языков, Go использует Unicode.
Например,
package main
import "fmt"
func main() {
helloworld := "Hello, 世界"
fmt.Println(helloworld)
for i, r := range helloworld {
fmt.Println(i, r, string(r))
}
}
Детская площадка: https://play.golang.org/p/Q_iEzdlGxLu
Выход:
Hello, 世界
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
5 44 ,
6 32
7 19990 世
10 30028 界
Блог Go: Строки, байты, руны и символы в Go
Консорциум Unicode