Tôi mới dùng Go và cố gắng viết một ứng dụng đọc các tệp RPM. Sự bắt đầu của mỗi khối có một Magic char là [4]byte
.Trong Golang, làm thế nào để bạn chuyển đổi một slice thành một mảng
Đây là struct tôi
type Lead struct {
Magic [4]byte
Major, Minor byte
Type uint16
Arch uint16
Name string
OS uint16
SigType uint16
}
Tôi cố gắng để làm như sau:
lead := Lead{}
lead.Magic = buffer[0:4]
tôi đang tìm kiếm trực tuyến và không chắc chắn làm thế nào để đi từ một lát để một mảng (không sao chép) . Tôi luôn có thể làm cho Magic []byte
(hoặc thậm chí uint64
), nhưng tôi tò mò hơn về cách tôi sẽ đi từ loại []byte
đến [4]byte
nếu cần thiết?
Có một cuộc tranh luận gần đây về việc liệu nó có nên được phép chia thành một mảng hay không. Các kết quả không có kết quả, một cái gì đó giống như những gì bạn muốn có thể được thêm vào trong tương lai. Hãy nhớ rằng [4] byte là một đối tượng và không phải là một con trỏ tới một đối tượng. Điều duy nhất có thể là gán cho một con trỏ tới một mảng. – fuz
https://play.golang.org/p/ulk0kmJzf6 –