Ваш вопрос немного вводит в заблуждение.
Основываясь на ваш вопрос, что вы действительно хотите преобразовать значение byte
или (фрагмент байт) в []byte
персонажу string
или (что более или менее rune
в Go).
Отныне я буду разделять единственный byte
значения от []byte
с использованием этих переменных:
b := byte(0x61)
bs := []byte{b}
Чтобы преобразовать его в string
, вы можете просто использовать преобразование, которое является чистым и самым простым:
s := string(bs)
Если вы хотите его как «символ», вы можете преобразовать его в rune
:
r := rune(b)
Другим решением является использование fmt.Printf()
как упомянуто в VonC's answer и используя %s
глагол, который:
%s the uninterpreted bytes of the string or slice
Вы можете взглянуть на эти альтернативы:
%c the character represented by the corresponding Unicode code point
%q a single-quoted character literal safely escaped with Go syntax.
%q
принимает одновременно byte
, []byte
и rune
.
Смотрите этот Litte пример, чтобы продемонстрировать это (попробуйте на Go Playground):
b := byte(0x61)
bs := []byte{b}
fmt.Printf("%s\n", bs)
fmt.Printf("%c\n", b)
fmt.Println(string(bs))
fmt.Printf("%q\n", bs)
fmt.Printf("%q\n", b)
fmt.Printf("%q\n", rune(b))
Выход:
a
a
a
"a"
'a'
'a'
Если вам нужен результат как string
, вы можете использовать fmt.Sprintf()
вариант упомянутых в satran's answer примерно:
s := fmt.Sprintf("%s", bs)
Но проще всего использовать преобразование string
(string(bs)
).
Я взял на себя «вводящую в заблуждение» часть, но сначала попробовал простой ответ, ожидая, когда ОП выяснит. Твоя гораздо более полная. +1 – VonC