Go でスライスと配列を操作する場合、2 つのタイプの間で変換する必要がある場合があります。一般的なシナリオは、コピーを作成せずにスライスを配列に変換することです。これは、いくつかの異なる方法を使用して実現できます。
コピー関数を使用すると、あるスライスから別のスライスに要素をコピーできます。ただし、コピーできるのはスライス間のみであり、スライスと配列間ではコピーできません。これを回避するには、次のトリックを使用できます。
varLead := Lead{} copy(varLead.Magic[:], someSlice[0:4])
このコードでは、varLead.Magic はサイズ 4 の配列であり、someSlice はスライスです。 varLead.Magic で [:] 構文を使用して、基になる配列を指すスライス ヘッダーを作成します。次に、copy 関数は someSlice[0:4] の要素をこのスライス ヘッダーにコピーし、コピーを作成せずに効果的に配列に変換します。
別のオプションは次のとおりです。 for ループを使用して、要素をスライスから配列に手動でコピーします。
for index, b := range someSlice { varLead.Magic[index] = b }
このコードは、someSlice 内の要素を反復して代入します。各要素を varLead.Magic の対応するインデックスに関連付けます。これは、コピーを作成せずにスライスを配列に変換する簡単で簡単な方法です。
最後に、リテラルを使用してスライスから配列を作成することもできます。
varLead.Magic = [4]byte{someSlice[0], someSlice[1], someSlice[2], someSlice[3]}
このコードは、サイズ 4 の配列を明示的に作成し、someSlice の最初の 4 つの要素をそれに割り当てます。これはスライスを配列に変換する最もコンパクトで読みやすい方法ですが、配列に多数の要素がある場合は面倒になる可能性があります。
以上がコピーせずに Go スライスを配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。