Go で配列をスライスに変換する
配列をスライスに変換するのは簡単なことのように思えるかもしれませんが、オンラインで明確な例を見つけるのは難しい場合があります。この記事では、特にバイト配列を操作する場合の、この問題に対する詳細な解決策を説明します。
Go では、配列は固定サイズの値のコレクションですが、スライスは動的にサイズが変更される参照型のビューです。基礎となる配列に変換します。バイトの配列をバイトのスライスに変換するには、構文 []byte(array) を使用できます。ただし、このアプローチでは基になるデータのコピーが作成されるため、効率が重要な一部のシナリオでは望ましくない場合があります。
より効率的な方法は、スライス構文 array[:] を利用することです。この式は、基になる配列を元の配列と共有するスライスを作成します。その結果、スライスまたは配列のいずれかに加えられた変更は両方に反映されます。
データのコピーを作成せずに変換プロセスを示すコード例を次に示します。
package main import "fmt" func Foo() [32]byte { return [32]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'} } func Bar(b []byte) { fmt.Println(string(b)) } func main() { x := Foo() Bar(x[:]) }
この例では、Foo 関数はバイトの配列を返し、Bar 関数はバイトのスライスを入力として受け取ります。 Bar 関数が呼び出されると、x[:] 式を使用して、x と同じ基礎となる配列を共有するスライスが作成されます。 x に加えられた変更は Bar に渡されるスライスに反映され、その逆も同様です。
以上がデータをコピーせずに Go アレイをスライスに効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。