Goで文字列の部分文字列を取り出すと、新しいメモリは割り当てられません。代わりに、部分文字列の基礎となる表現には、元の文字列のデータポインタのオフセットであるデータポインタが含まれています。部分文字列とGoガベージコレクタ
これは、大きな文字列を持ち、小さな部分文字列を追跡したい場合、短い部分文字列へのすべての参照を解放するまで、ガベージコレクタは大きな文字列を解放できないことを意味します。
スライスにも同様の問題がありますが、copy()を使用してサブスライスのコピーを作成することで回避できます。私は文字列の類似したコピー操作を知らない。サブストリングの「コピー」を作成するための慣用的で最速の方法は何ですか?例えば
これは行くの欠点の一種です。これにはmake(string、foo [x:y])を使うことができるはずです。 – fuz