среда, 19 августа 2015 г.

или я такой, или что то не так у Go

Имеем бинарный файл. надо оттуда считать структуру. час промучился, но вот такой код дает ошибку  "binary.Read: invalid type *main.Header"
package main

import(
    "fmt"
    "bytes"
    "encoding/binary"
)

type Header struct {
    IsFull        bool
}

func main(){
    a:=make([]byte,1024,1024)
    for i:=0;i<1024;i++{
        a[i]=byte(i)
    }
    var pi Header
    buf := bytes.NewReader(a)
    err := binary.Read(buf, binary.LittleEndian, &pi)
    fmt.Println(err)    
}
но! если заменить IsFull с bool на любой числовой тип (int например), то все работает отлично. я даже решил, что это бага в стандартной библиотеке го. но вот что ответили на багтрекере:

This is working as expected. The encoding/binary package, as the documentation says, "implements simple translation between numbers and byte sequences." The type bool is not a number.

Комментариев нет:

Отправить комментарий