Я только начал идти сегодня, так что это может быть очевидно, но я ничего не мог найти на нем.Как работают функции int-to-string в Go?
Что делает var x uint64 = 0x12345678; y := string(x)
y
?
Я знаю, что var x uint8 = 65; y := string(x)
даст y
байт 65, символ A
, и здравый смысл подсказывает (поскольку типы больше, чем uint8
разрешено быть отлиты в строки), что они будут просто быть упакованы в родной порядок байтов (т.е. мало endian) и присваивается переменной.
Это, кажется, не быть:
hex.EncodeToString([]byte(y)) ==> "efbfbd"
Первая мысль говорит, что это адрес с последнего байта остаться от из-за какой-то странной нулевой терминатор штуковина, но если я выделяю два x
и y
переменные с двумя разными значениями и распечатать их, я получаю тот же результат.
var x, x2 uint64 = 0x10000000, 0x20000000
y, y2 := string(x), string(x2)
fmt.Println(hex.EncodeToString([]byte(y))) // "efbfbd"
fmt.Println(hex.EncodeToString([]byte(y2))) // "efbfbd"
раздражающе Я не могу найти реализацию для строки типа в любом месте, хотя я, наверное, не выглядел достаточно трудно.