cap は主に、スライスに可変長を提供できるようにするためのものです。
想像してみてください。cap がなければ、len しかありません。 (推奨学習: go)
sliceA の長さは 10、len=10 で、要素が埋め込まれています。ここで 11 番目の要素を挿入する必要があります。
やり方
sliceA の長さを 20 (len=20) に拡張すると、有効な要素が 11 個、空き要素が 9 個になります。
sliceA が外部に公開するインターフェイスは ptr と len=20 のみです。現時点では、別の要素を挿入する必要があります。
sliceA は拡張するべきか、それとも元のベースで直接挿入できるか?同時に、どのインデックスから挿入する必要があるか?
これらの問題は、レンズとキャップの組み合わせで解決できます。
cap() は、配列またはスライスの容量を確認するために使用できます。
配列では、長さは固定され、不変であるため、len( arr) と cap(arr) 出力は常に同じです。
slice では、len(sli) は表示されている要素の数 (つまり、要素を直接印刷するときに表示される要素の数) を示します。 cap(sli) は、A が存在する要素の数を示します。例:
arr := []int{2, 3, 5, 7, 11, 13} sli := arr[1:4] fmt.Println(sli) fmt.Println(len(sli)) fmt.Println(cap(sli))
cap() 関数は、配列スライスによって割り当てられたスペース サイズを返します。
package main import "fmt" func main() { mySlice := make([]int, 5, 10) fmt.Println("len(mySlice):", len(mySlice)) fmt.Println("cap(mySlice):", cap(mySlice)) }
このプログラムの出力は次のとおりです:
len(mySlice): 5 cap(mySlice): 10
以上がgolang キャップとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。