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))