2017-07-25 2 views

Antwort

1

Es schneidet nicht "über" die Länge, 2 ist genau die Länge (ist gleich).

Für Arrays oder Strings, die Indizes in Bereich wenn 0 <= low <= high <= len(a), sonst sind sie außerhalb der Reichweite.

Da Sie ein string schneiden, ist Indizes in Reichweite, wenn:

0 <= low <= high <= len(a) 

Dieser Ausdruck:

"hi"[2:] 

Da die oberen Schranke fehlt, wird standardmäßig Länge, das ist 2, so ist es äquivalent zu:

"hi"[2:2] 

Dies ist in der Spezifikation absolut gültig und führt zu einer leeren string. Wenn Sie es in "hi"[3:] ändern, liegt es außerhalb des gültigen Bereichs und führt zu einem Fehler bei der Kompilierung (das Schneiden einer Konstanten string kann zur Kompilierungszeit überprüft werden).

Begründung ist, dass die obere Grenze exklusiv ist, z. a[0:0] ist gültig und wird 0-Länge, a[0:1] hat eine Länge von 1, a[0:len(a)] gültig und wird die gleiche Länge wie a haben.

Bei Schichten kann die untere Grenze sogar größer sein als die Schichtlänge (darf aber die Schichtkapazität nicht überschreiten). Weitere Informationen finden Sie unter Slicing: Out of bounds error in Go.

Verwandte Themen