私はしばらくGoを試してきましたが、この質問は私を悩ませ続けています。スライスにやや大きなデータセット (たとえば、1000 万の int64) を構築するとします。
package main
import (
"math"
"fmt"
)
func main() {
var a []int64
var i int64;
upto := int64(math.Pow10(7))
for i = 0; i < upto; i++ {
a = append(a, i)
}
fmt.Println(cap(a))
}
しかし、私はそれらのほとんどを必要としないと判断したので、最終的にそれらの 10 個だけをスライスしたいと思います。Go の wiki でスライスと削除の両方の手法を試しましたが、いずれもスライスの容量を減らすようには見えません。
それが私の質問です.Goにはrealloc()
、Cの同じポインターに対する以前の呼び出しよりも小さいサイズの引数を使用して、スライスの容量を縮小する実際の方法はありませんか? それは問題であり、どのように対処する必要がありますか?