Golang: преобразование uint8 в строку
http://play.golang.org/p/BoZkHC8_uA
Я хочу преобразовать uint8 в строку, но не могу понять, как это сделать.
package main
import "fmt"
import "strconv"
func main() {
str := "Hello"
fmt.Println(str[1]) // 101
fmt.Println(strconv.Itoa(str[1]))
}
это дает мне prog.go:11: cannot use str[1] (type uint8) as type int in function argument
[process exited with non-zero status]
есть идеи?
3 ответов
просто преобразовать его :
fmt.Println(strconv.Itoa(int(str[1])))
существует разница между его преобразованием или литьем, рассмотрим:
var s uint8 = 10
fmt.Print(string(s))
fmt.Print(strconv.Itoa(int(s)))
строка cast печатает ' \n '(новая строка), преобразование строки печатает "10". Разница становится ясной, как только вы рассматриваете преобразование байтов []обоих вариантов:
[]byte(string(s)) == [10] // the single character represented by 10
[]byte(strconv.Itoa(int(s))) == [49, 48] // character encoding for '1' and '0'
см. этот код в play.golang.orgвы можете сделать это еще проще, используя кастинг, это сработало для меня:
var c uint8
c = 't'
fmt.Printf(string(c))