Golang-Sprache ist eine objektorientierte Programmiersprache, die gut lesbar und wartbar ist. Für die meisten Entwickler ist es bequemer und schneller, Golang für die Entwicklung zu verwenden. In Golang ist struct ein sehr verbreiteter Datentyp, der eine Reihe von Attributen eines Objekts darstellen kann. In der tatsächlichen Entwicklung ist es häufig erforderlich, zwischen Strukturen zu konvertieren. Heute erfahren Sie, wie Golang die Strukturkonvertierung durchführt.
Zuerst definieren wir eine Struktur:
type Person struct { Name string Age int Address Address } type Address struct { Province string City string Street string }
Im obigen Code haben wir zwei Strukturen definiert, eine davon ist „Person“, die die Eigenschaften „Name“, „Alter“ und „Adresse“ enthält, wobei „Adresse“ eine verschachtelte Struktur ist.
In der tatsächlichen Entwicklung müssen wir die Struktur häufig in das JSON-Format konvertieren. Das in Golang integrierte Encoding/JSON-Paket bietet praktische JSON-Codierungs- und Decodierungsfunktionen. Mit diesem Paket können wir Strukturen in Daten im JSON-Format konvertieren.
import "encoding/json" func main() { person := Person{Name: "Tom", Age: 18, Address: Address{Province: "Beijing", City: "Beijing", Street: "Wudaokou"}} jsonBytes, err := json.Marshal(person) if err != nil { fmt.Println(err) } fmt.Println(string(jsonBytes)) }
Im obigen Code erstellen wir zunächst eine Person-Instanz und rufen dann json.Marshal() auf, um die Instanz in Daten im JSON-Format zu konvertieren. Tritt während des Konvertierungsvorgangs ein Fehler auf, wird eine Fehlermeldung ausgegeben, andernfalls wird der String des konvertierten Ergebnisses ausgegeben.
Zusätzlich zur Konvertierung von Strukturen in das JSON-Format müssen wir häufig auch Daten im JSON-Format in Strukturen konvertieren. Im obigen Beispiel haben wir person in das JSON-Format konvertiert. Nun wandeln wir die JSON-Daten in eine Struktur um.
jsonStr := `{"Name":"Tom","Age":18,"Address":{"Province":"Beijing","City":"Beijing","Street":"Wudaokou"}}` person := Person{} err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println(err) } fmt.Println(person)
Im obigen Code definieren wir zunächst die JSON-Formatdaten als jsonStr und rufen dann json.Unmarshal() auf, um sie in eine Personenstruktur zu konvertieren. Wenn während des Konvertierungsvorgangs ein Fehler auftritt, wird ebenfalls die Fehlermeldung ausgegeben, andernfalls wird die konvertierte Person-Strukturinstanz ausgegeben.
In einigen Fällen stimmen die Feldnamen der Daten nicht mit den Feldnamen in der Struktur überein. In diesem Fall ist eine Feldkonvertierung erforderlich. In Golang kann dies erreicht werden, indem der Attributname der Struktur in Tag geändert wird.
type Person struct { Name string `json:"name"` Age int `json:"age"` Address Address } type Address struct { Province string `json:"province"` City string `json:"city"` Street string `json:"street"` }
Im obigen Code haben wir das JSON-Tag vor dem Strukturattributnamen hinzugefügt, der den JSON-Attributnamen angibt. Wenn das Tag während des Konvertierungsprozesses vorhanden ist, hat es Vorrang.
In Strukturen kann es Attribute geben, die Arrays enthalten. In diesem Fall müssen wir das Array durchlaufen.
type Person struct { Name string `json:"name"` Age int `json:"age"` Address []Address `json:"address"` } type Address struct { Province string `json:"province"` City string `json:"city"` Street string `json:"street"` } func main() { jsonStr := `{"name":"Tom","age":18,"address":[{"province":"Beijing","city":"Beijing","street":"Wudaokou"},{"province":"Henan","city":"Kaifeng","street":"Longting"}]}` person := Person{} err := json.Unmarshal([]byte(jsonStr), &person) if err != nil { fmt.Println(err) } for _, a := range person.Address { fmt.Println(a.Province, a.City, a.Street) } }
Im obigen Code enthält die Person-Struktur ein Array von Adressen, die wir durchlaufen müssen. Während des Konvertierungsprozesses können wir Unmarshal verwenden, um Daten im JSON-Format in Personenstrukturinstanzen zu konvertieren und dann das Adressarray zu durchlaufen, um die Provinz-, Stadt- und Straßenattribute jeder Adressinstanz auszugeben.
In Golang ist die Strukturkonvertierung ein relativ häufiger Vorgang. Durch die Einleitung dieses Artikels haben wir erfahren, wie Golang Struktur und JSON ineinander konvertiert. Für einige Sonderfälle, wie z. B. Feldkonvertierung und Array-Durchquerung, sind tiefergehende Kenntnisse und Bedienungsschritte erforderlich. Die Strukturkonvertierungsfunktion von Golang macht unsere Entwicklung bequemer und schneller.
Das obige ist der detaillierte Inhalt vonSo führen Sie eine Strukturkonvertierung in Golang durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!