Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet Golang-Kappe?

Was bedeutet Golang-Kappe?

(*-*)浩
(*-*)浩Original
2019-12-03 09:13:104892Durchsuche

Was bedeutet Golang-Kappe?

cap dient hauptsächlich dazu, dem Slice eine variable Länge zu ermöglichen.

Stellen Sie sich vor, es gäbe keine Obergrenze, sondern nur Len. (Empfohlenes Lernen: go)

sliceA hat eine Länge von 10, len=10 und wurde mit Elementen gefüllt; jetzt muss das elfte Element eingefügt werden.

So geht's

Die Länge von SliceA wird auf 20 verlängert, len=20. Zu diesem Zeitpunkt gibt es 11 nützliche Elemente und 9 freie Stellen.

Die einzigen Schnittstellen, die SliceA der Außenwelt zugänglich macht, sind ptr und len=20. Zu diesem Zeitpunkt müssen Sie ein weiteres Element einfügen.

Soll SliceA erweitert werden oder kann es direkt auf der Originalbasis eingefügt werden? Ab welchem ​​Index soll es gleichzeitig eingefügt werden?

Diese Probleme können mit der Kombination von Len und Cap gelöst werden.

cap() kann verwendet werden, um die Kapazität eines Arrays oder Slice zu überprüfen

In einem Array ist die Länge fest und unveränderlich, also len(arr) und cap(arr) Die Ausgabe ist immer die gleiche

In Slice gibt len(sli) die Anzahl der sichtbaren Elemente an (d. h. die Anzahl der Elemente, die durch direktes Drucken des Elements gesehen werden), während cap (sli) gibt die Anzahl aller Elemente an, zum Beispiel:

arr := []int{2, 3, 5, 7, 11, 13}
sli := arr[1:4]
fmt.Println(sli)
fmt.Println(len(sli))
fmt.Println(cap(sli))

cap()-Funktion gibt die vom Array-Slice zugewiesene Speicherplatzgröße zurück.

package main 
 
import "fmt" 
 
func main() { 
    mySlice := make([]int, 5, 10)  
 
    fmt.Println("len(mySlice):", len(mySlice)) 
    fmt.Println("cap(mySlice):", cap(mySlice)) 
}

Das Ausgabeergebnis dieses Programms ist:

len(mySlice): 5
cap(mySlice): 10

Das obige ist der detaillierte Inhalt vonWas bedeutet Golang-Kappe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn