亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將切片轉換為數組?

如何將切片轉換為數組?

Go
慕的地8271018 2021-06-15 12:47:44
我正在嘗試編寫一個讀取 RPM 文件的應用程序。每個塊的開頭都有一個魔術字符[4]byte。這是我的結構type Lead struct {  Magic        [4]byte  Major, Minor byte  Type         uint16  Arch         uint16  Name         string  OS           uint16  SigType      uint16}我正在嘗試執行以下操作:lead := Lead{}lead.Magic = buffer[0:4]我在網上搜索,不知道如何從切片到數組(不復制)。我總是可以制作 Magic []byte(甚至uint64),但我更好奇我將如何從類型[]byte變為[4]byte如果需要?
查看完整描述

3 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

內置方法copy只會將切片復制到切片,而不是將切片復制到數組。


你必須欺騙復制認為數組是一個切片


copy(varLead.Magic[:], someSlice[0:4])

或者使用 for 循環進行復制:


for index, b := range someSlice {


    varLead.Magic[index] = b


}

或者像 zupa 一樣使用文字。我已經添加到他們的工作示例中。


查看完整回答
反對 回復 2021-06-28
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

您已在該結構中分配了四個字節,并希望為該四字節部分分配一個值。沒有復制就沒有概念上的方法來做到這一點。

看看copy內置的如何做到這一點。


查看完整回答
反對 回復 2021-06-28
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

試試這個:

copy(lead.Magic[:], buf[0:4])


查看完整回答
反對 回復 2021-06-28
  • 3 回答
  • 0 關注
  • 290 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號