ホームページ  >  記事  >  バックエンド開発  >  golang キャップとはどういう意味ですか?

golang キャップとはどういう意味ですか?

(*-*)浩
(*-*)浩オリジナル
2019-12-03 09:13:104867ブラウズ

golang キャップとはどういう意味ですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。