Heim >Backend-Entwicklung >Golang >Wie kann ich die Größe einer beliebigen Datenstruktur in Go generisch ermitteln?
Generische Funktion zum Ermitteln der Strukturgröße in Go
Diese Frage befasst sich mit der Erstellung einer generischen Funktion, die die Größe einer beliebigen Datenstruktur in bestimmt Go, analog zur Sizeof-Funktion von C. Der Entwickler hat versucht, dies mithilfe von Schnittstellen und Reflektion zu erreichen, hat jedoch falsche Ergebnisse erhalten.
Verstehen des Problems
Der bereitgestellte Code berechnet die Größe der Reflect.Value-Struktur und nicht das in der T-Schnittstelle gespeicherte Objekt. Dies wird durch die Verwendung von Reflect.ValueOf(T) verursacht. Um dieses Problem zu beheben, muss mithilfe von „reflect.TypeOf(T).Size()“ die Größe des Typs und nicht der Wert bestimmt werden.
Korrigierter Code:
func getSize(T interface{}) { v := reflect.ValueOf(T) size := reflect.TypeOf(v).Size() fmt.Println(size) }
Überarbeitete Ausgabe:
Mit dieser Korrektur gibt der Code die erwartete Größe von 40 für die gegebene Struktur zurück, Berücksichtigung der Polsterung.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe einer beliebigen Datenstruktur in Go generisch ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!