Как bytes.Split () работает с байтами, преобразованными из строки UTF-8? - PullRequest
0 голосов
/ 07 октября 2019
$ cat main.go 
#!/usr/bin/env gorun
// vim: set noexpandtab tabstop=2:

package main

import (
    "fmt"
    "os"
    "bytes"
)

func main() {
    fmt.Printf("%q\n", bytes.Split([]byte(os.Args[1]), []byte(os.Args[2])))
}
$ ./main.go 程序 ''
["程" "序"]

Я ожидаю, что main.go напечатает несколько байтов на символ UTF-8. Но он просто печатает два символа UTF-8 и .

Может кто-нибудь помочь мне понять, почему это так? Спасибо.

1 Ответ

2 голосов
/ 07 октября 2019

Если sep пуст, Split разделяется после каждой последовательности UTF-8.

- документы .

Так что хотя bytes.Splitпозволяет вам разбивать в произвольных точках и разбивать последовательности UTF-8 на части, вызывая его с разделителем []byte("") не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...