So drucken Sie Strukturen mit Field String()-Methoden
fmt.Println() druckt native Darstellungen von Strukturen, da diese die nicht implementieren String()-Schnittstelle standardmäßig. Die Implementierung von String() für jede Struktur kann mühsam sein und erfordert Aktualisierungen, wenn Felder hinzugefügt oder entfernt werden.
Hilfsfunktion für benutzerdefiniertes Drucken
Um diese Einschränkung zu beheben, können Sie Folgendes tun Verwenden Sie eine Hilfsfunktion, die Reflektion nutzt (Reflect-Paket):
func PrintStruct(s interface{}, names bool) string { // ... // (function body as provided in the answer) }
Diese Funktion iteriert über Strukturfelder und ruft String()-Werte ab, wenn anwendbar:
fmt.Println(PrintStruct(a, true))
Strukturspezifische String()-Methode
Alternativ können Sie eine String()-Methode für Ihre Struktur definieren, die die PrintStruct()-Funktion aufruft :
func (a A) String() string { return PrintStruct(a, true) }
Diese Methode verarbeitet dynamische Änderungen in Strukturfeldern ohne Änderungen am String() Methode.
Verwendung
Mit der Hilfsfunktion oder der strukturspezifischen String()-Methode können Sie Strukturen bequem mit ihren Feld-String()-Werten drucken:
// using the PrintStruct() function fmt.Println(PrintStruct(a, true)) // using the custom String() method (if defined) fmt.Println(a)
Das obige ist der detaillierte Inhalt vonWie kann ich Go-Strukturen, die Felder enthalten, mit String()-Methoden effektiv drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!