Die Reader-Schnittstelle in der Go-Sprache definiert eine Leseoperation, und diejenigen, die die Reader-Schnittstelle implementieren, verfügen über die Lesefunktion. n repräsentiert die tatsächliche Anzahl der diesmal gelesenen Bytes (0 & lt; = n & lt; = len (p))
err Gibt den Fehlerbericht dieses Lesevorgangs an (falls vorhanden, nil, wenn nicht) Auch wenn die Anzahl der gelesenen Bytes n kleiner als len(p) ist, kann der aufrufende Körper sie auch während des Funktionsaufrufs verwenden . Der gesamte p-Raum (ich weiß nicht, was diese Beschreibung ausdrücken soll)
Wenn beim Lesevorgang ein Fehler auftritt oder der Vorgang beendet ist Nachdem die Datei n Datenbytes erfolgreich gelesen hat, werden die n gelesenen Datenbytes zurückgegeben, und die Rückgabe von err kann dann zwei Vorgänge haben:
In diesem Lesevorgang sind n (>0 ) und err (nicht Null) werden zurückgegeben.Oder dieser Lesevorgang gibt n (>0) und Null zurück, und der nächste Aufruf gibt 0 und err (nicht Null) zurück Beide Vorgänge sind möglich, daher sollte der Anrufer immer zuerst feststellen, ob Daten gemäß n>0 zurückgegeben werden, anstatt zuerst festzustellen, ob err Null istZum Beispiel, wenn ein bestimmter Anruf das Ende erreicht der Datei und liest auch Wenn n Bytes an Daten benötigt werden, kann Reader auf zwei Arten implementiert werden:
Der aktuelle Aufruf gibt n und einen EOF-Fehler zurückDer aktuelle Aufruf gibt n zurück und Null, und der nächste Aufruf gibt 0 zurück. Und die Implementierung von EOFRead sollte nicht 0 und Null zurückgeben, das heißt, wenn 0 zurückgegeben wird, sollte ein Fehler ungleich Null zurückgegeben werden, es sei denn, die Größe des Puffers Wenn das Leerzeichen 0 ist, sollte der Aufrufer den Aufruf von 0 ignorieren und Rückgabewertkombinationen wie Null werden so behandelt, als ob nichts passiert wäre. Es wird besonders betont, dass diese Rückgabe kein EOF anzeigtDas obige ist der detaillierte Inhalt vonWird Golang das Lesen blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!