На ходе игровой площадки, этот кодПочему элементы байтовых кусочков возвращаются как Ints in Go?
package main
import (
"fmt"
)
var a = []byte{ 0xff, 0xaa, 0x66, 0x33, 0x00 }
func main() {
for b := range a {
fmt.Printf("%T\n", b)
}
}
печатает
int
int
int
int
int
Почему в мире не ломтик байт даст вам байты, когда вы перебирать его (или, по крайней мере uint8 или что-то)?
Вот ссылка на детскую площадку: https://play.golang.org/p/V1uZZWWq-X.
Ой, подождите, потому что '[] byte' эквивалентен' string', и итерация через 'string' должна дать вам' rune'? Это смущает, почему бы не ограничить такое поведение типом 'string'? – cderwin
Нет, 'for i: = range thing' устанавливает i в _indices_ в вещь (в отличие от Python или такого). 'для i, b: = range byteslice' помещает индекс в' i' и байт в 'b', а' for _, b: = range byteslice' просто поместил бы байт в 'b'. – twotwotwo
О, черт возьми, я глуп, спасибо тонну. Если вы хотите ответить на этот вопрос, я буду отмечать его как правильное. – cderwin