Go でのスライスから配列への変換
Go では、スライスを配列に直接割り当てようとすると、コンパイル エラーが発生します。この質問では、特定の長さのスライスを配列に変換する方法を検討します。
問題ステートメント
4 の配列で構成される Magic フィールドを持つリード ブロックを定義する構造体を考えてみましょう。 bytes:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
このタスクは、次を使用して 4 バイトのスライスを Magic フィールドに割り当てることです。次の構文:
lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
解決策
指定された長さのスライスを配列に変換するために、Go は次のメソッドを提供します。
配列サブスライスで copy() を使用する
組み込みの copy 関数は、配列をスライスとして扱うことで、スライスを配列にコピーすることができます。
copy(varLead.Magic[:], someSlice[0:4])
For ループを使用する
スライス要素を反復処理し、配列に割り当てます。要素:
for index, b := range someSlice { varLead.Magic[index] = b }
配列リテラルの使用
別のアプローチは、配列リテラルを直接使用することです:
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{Magic: [4]byte{0x12, 0x34, 0x56, 0x78}}
以上がGo スライスを配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。